namespace ChadSoft.Logging { using System; /// /// Static class used for logging. /// public static class Logger { // The format string used to format text-based logging messages // {0}: Level; {1}: Message private const string FORMAT_STRING = "{0}: {1}"; /// /// Logs the specified Debug message. /// /// The message. public static void Debug(string message) { Log(LogLevel.Debug, message); } /// /// Logs the specified Debug message. /// /// The message format. /// The message arguments. public static void Debug(string format, params object[] args) { Log(LogLevel.Debug, format, args); } /// /// Logs the specified Informational message. /// /// The message. public static void Info(string message) { Log(LogLevel.Info, message); } /// /// Logs the specified Informational message. /// /// The message format. /// The message arguments. public static void Info(string format, params object[] args) { Log(LogLevel.Info, format, args); } /// /// Logs the specified Error message. /// /// The message format. /// The message arguments. public static void Error(string format, params object[] args) { Log(LogLevel.Error, format, args); } /// /// Logs the specified exception. /// /// The ex. public static void Error(Exception ex) { Log(LogLevel.Error, ex.Message); } /// /// Logs a message at the specified level. /// /// The error level. /// The message. public static void Log(LogLevel level, string message) { var logMessage = String.Format(FORMAT_STRING, level, message); // NOTE: Plug in and/or replace logging mechanism here switch (level) { case LogLevel.Debug: System.Diagnostics.Debug.WriteLine(logMessage); break; case LogLevel.Info: case LogLevel.Warn: Console.WriteLine(logMessage); break; case LogLevel.Error: case LogLevel.Fatal: Console.Error.WriteLine(logMessage); break; } } /// /// Logs a message at the specified level using the supplied format string and arguments. /// /// The error level. /// The format string. /// The arguments. public static void Log(LogLevel level, string format, params object[] args) { Log(level, String.Format(format, args)); } } }