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));
}
}
}