SweetLib/SweetLib/Utils/Logger/Logger.cs
Serraniel dd5fc290b2 Finalized logger
Added Console Demo
2017-04-12 17:44:02 +02:00

75 lines
1.8 KiB
C#

using System;
using SweetLib.Utils.Logger.Memory;
using SweetLib.Utils.Logger.Message;
namespace SweetLib.Utils.Logger
{
[Flags]
public enum LogLevel
{
None = 0,
Trace = 1 << 0,
Debug = 1 << 1,
Info = 1 << 2,
Warn = 1 << 3,
Error = 1 << 4,
All = Int32.MaxValue,
};
public static class Logger
{
public static LogLevel GlobalLogLevel { get; set; } = LogLevel.Info | LogLevel.Warn | LogLevel.Error;
public static ILogMemory DefaultLogMemory = new ArchivableConsoleLogMemory();
public static void Log(LogLevel logLevel, string message)
{
Log(logLevel, message, DefaultLogMemory);
}
public static void Log(LogLevel logLevel, string message, ILogMemory logMemory)
{
Log(new LogMessage(logLevel, message), logMemory);
}
public static void Log(LogMessage message, ILogMemory logMemory)
{
if (message == null)
throw new ArgumentNullException(nameof(message));
if (logMemory == null)
throw new ArgumentNullException(nameof(logMemory));
if ((GlobalLogLevel & message.LogLevel) == LogLevel.None)
return;
logMemory.Remember(message);
}
public static void Trace(string message)
{
Log(LogLevel.Trace, message);
}
public static void Debug(string message)
{
Log(LogLevel.Debug, message);
}
public static void Info(string message)
{
Log(LogLevel.Info, message);
}
public static void Warn(string message)
{
Log(LogLevel.Warn, message);
}
public static void Error(string message)
{
Log(LogLevel.Error, message);
}
}
}