75 lines
1.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|