[IMPL] Made LoggerFactory compatible, Added Blacklist
This commit is contained in:
parent
cb1f8d42aa
commit
fad4c4598a
4 changed files with 163 additions and 45 deletions
178
Logger.cs
178
Logger.cs
|
|
@ -1,9 +1,11 @@
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using static Xorog.Logger.LoggerObjects;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Xorog.Logger;
|
namespace Xorog.Logger;
|
||||||
|
|
||||||
public class Logger
|
public class Logger : ILogger
|
||||||
{
|
{
|
||||||
private static bool loggerStarted = false;
|
private static bool loggerStarted = false;
|
||||||
private static LoggerObjects.LogLevel maxLogLevel = LoggerObjects.LogLevel.DEBUG;
|
private static LoggerObjects.LogLevel maxLogLevel = LoggerObjects.LogLevel.DEBUG;
|
||||||
|
|
@ -25,7 +27,7 @@ public class Logger
|
||||||
/// <param name="level">The loglevel that should be displayed in the console, does not affect whats written to file</param>
|
/// <param name="level">The loglevel that should be displayed in the console, does not affect whats written to file</param>
|
||||||
/// <param name="cleanUpBefore">Clean up old logs before a datetime</param>
|
/// <param name="cleanUpBefore">Clean up old logs before a datetime</param>
|
||||||
/// <returns>A bool stating if the logger was started</returns>
|
/// <returns>A bool stating if the logger was started</returns>
|
||||||
public static void StartLogger(string filePath = "", LoggerObjects.LogLevel level = LoggerObjects.LogLevel.DEBUG, DateTime cleanUpBefore = new DateTime(), bool ThrowOnFailedDeletion = false)
|
public static ILogger StartLogger(string filePath = "", LoggerObjects.LogLevel level = LoggerObjects.LogLevel.DEBUG, DateTime cleanUpBefore = new DateTime(), bool ThrowOnFailedDeletion = false)
|
||||||
{
|
{
|
||||||
if (loggerStarted)
|
if (loggerStarted)
|
||||||
throw new Exception($"The logger is already started");
|
throw new Exception($"The logger is already started");
|
||||||
|
|
@ -85,8 +87,8 @@ public class Logger
|
||||||
|
|
||||||
string LogLevelText = b.LogLevel.ToString();
|
string LogLevelText = b.LogLevel.ToString();
|
||||||
|
|
||||||
if (LogLevelText.Length != 5)
|
if (LogLevelText.Length < 6)
|
||||||
LogLevelText += " ";
|
LogLevelText += new string(' ', 6 - LogLevelText.Length);
|
||||||
|
|
||||||
ConsoleColor LogLevelColor = ConsoleColor.Gray;
|
ConsoleColor LogLevelColor = ConsoleColor.Gray;
|
||||||
|
|
||||||
|
|
@ -100,57 +102,104 @@ public class Logger
|
||||||
_ => ConsoleColor.Gray
|
_ => ConsoleColor.Gray
|
||||||
};
|
};
|
||||||
|
|
||||||
if (b.LogLevel == LoggerObjects.LogLevel.DEBUG)
|
string LogMessage = b.Message;
|
||||||
|
|
||||||
|
foreach (var blacklistobject in _loggerObjects.Blacklist)
|
||||||
|
LogMessage = LogMessage.Replace(blacklistobject, new String('*', blacklistobject.Length), StringComparison.CurrentCultureIgnoreCase);
|
||||||
|
|
||||||
|
if (b.LogLevel == LoggerObjects.LogLevel.TRACE)
|
||||||
{
|
{
|
||||||
if (maxLogLevel == LoggerObjects.LogLevel.DEBUG)
|
if (maxLogLevel == LoggerObjects.LogLevel.TRACE)
|
||||||
{
|
{
|
||||||
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
||||||
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
||||||
Console.ResetColor(); Console.WriteLine(b.Message);
|
Console.ResetColor(); Console.WriteLine(LogMessage);
|
||||||
|
|
||||||
|
if (b.Exception is not null)
|
||||||
|
Console.WriteLine(b.Exception.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (b.LogLevel == LoggerObjects.LogLevel.DEBUG2)
|
||||||
|
{
|
||||||
|
if (maxLogLevel is LoggerObjects.LogLevel.DEBUG2 or LoggerObjects.LogLevel.TRACE)
|
||||||
|
{
|
||||||
|
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
||||||
|
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
||||||
|
Console.ResetColor(); Console.WriteLine(LogMessage);
|
||||||
|
|
||||||
|
if (b.Exception is not null)
|
||||||
|
Console.WriteLine(b.Exception.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (b.LogLevel == LoggerObjects.LogLevel.DEBUG)
|
||||||
|
{
|
||||||
|
if (maxLogLevel is LoggerObjects.LogLevel.DEBUG or LoggerObjects.LogLevel.DEBUG2 or LoggerObjects.LogLevel.TRACE)
|
||||||
|
{
|
||||||
|
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
||||||
|
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
||||||
|
Console.ResetColor(); Console.WriteLine(LogMessage);
|
||||||
|
|
||||||
|
if (b.Exception is not null)
|
||||||
|
Console.WriteLine(b.Exception.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (b.LogLevel == LoggerObjects.LogLevel.INFO)
|
else if (b.LogLevel == LoggerObjects.LogLevel.INFO)
|
||||||
{
|
{
|
||||||
if (maxLogLevel is LoggerObjects.LogLevel.DEBUG or LoggerObjects.LogLevel.INFO)
|
if (maxLogLevel is LoggerObjects.LogLevel.DEBUG or LoggerObjects.LogLevel.INFO or LoggerObjects.LogLevel.DEBUG2 or LoggerObjects.LogLevel.TRACE)
|
||||||
{
|
{
|
||||||
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
||||||
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
||||||
Console.ResetColor(); Console.WriteLine(b.Message);
|
Console.ResetColor(); Console.WriteLine(LogMessage);
|
||||||
|
|
||||||
|
if (b.Exception is not null)
|
||||||
|
Console.WriteLine(b.Exception.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (b.LogLevel == LoggerObjects.LogLevel.WARN)
|
else if (b.LogLevel == LoggerObjects.LogLevel.WARN)
|
||||||
{
|
{
|
||||||
if (maxLogLevel is LoggerObjects.LogLevel.DEBUG or LoggerObjects.LogLevel.INFO or LoggerObjects.LogLevel.WARN)
|
if (maxLogLevel is LoggerObjects.LogLevel.DEBUG or LoggerObjects.LogLevel.INFO or LoggerObjects.LogLevel.WARN or LoggerObjects.LogLevel.DEBUG2 or LoggerObjects.LogLevel.TRACE)
|
||||||
{
|
{
|
||||||
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
||||||
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
||||||
Console.ResetColor(); Console.WriteLine(b.Message);
|
Console.ResetColor(); Console.WriteLine(LogMessage);
|
||||||
|
|
||||||
|
if (b.Exception is not null)
|
||||||
|
Console.WriteLine(b.Exception.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (b.LogLevel == LoggerObjects.LogLevel.ERROR)
|
else if (b.LogLevel == LoggerObjects.LogLevel.ERROR)
|
||||||
{
|
{
|
||||||
if (maxLogLevel is LoggerObjects.LogLevel.DEBUG or LoggerObjects.LogLevel.INFO or LoggerObjects.LogLevel.WARN or LoggerObjects.LogLevel.ERROR)
|
if (maxLogLevel is LoggerObjects.LogLevel.DEBUG or LoggerObjects.LogLevel.INFO or LoggerObjects.LogLevel.WARN or LoggerObjects.LogLevel.ERROR or LoggerObjects.LogLevel.DEBUG2 or LoggerObjects.LogLevel.TRACE)
|
||||||
{
|
{
|
||||||
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
||||||
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
||||||
Console.ResetColor(); Console.WriteLine(b.Message);
|
Console.ResetColor(); Console.WriteLine(LogMessage);
|
||||||
|
|
||||||
|
if (b.Exception is not null)
|
||||||
|
Console.WriteLine(b.Exception.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (b.LogLevel == LoggerObjects.LogLevel.FATAL && maxLogLevel >= LoggerObjects.LogLevel.FATAL)
|
else if (b.LogLevel == LoggerObjects.LogLevel.FATAL && maxLogLevel >= LoggerObjects.LogLevel.FATAL)
|
||||||
{
|
{
|
||||||
if (maxLogLevel is LoggerObjects.LogLevel.DEBUG or LoggerObjects.LogLevel.INFO or LoggerObjects.LogLevel.WARN or LoggerObjects.LogLevel.ERROR or LoggerObjects.LogLevel.FATAL)
|
if (maxLogLevel is LoggerObjects.LogLevel.DEBUG or LoggerObjects.LogLevel.INFO or LoggerObjects.LogLevel.WARN or LoggerObjects.LogLevel.ERROR or LoggerObjects.LogLevel.FATAL or LoggerObjects.LogLevel.DEBUG2 or LoggerObjects.LogLevel.TRACE)
|
||||||
{
|
{
|
||||||
Console.ResetColor();
|
Console.ResetColor();
|
||||||
Console.ForegroundColor = ConsoleColor.Black; Console.BackgroundColor = LogLevelColor; Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
Console.ForegroundColor = ConsoleColor.Black; Console.BackgroundColor = LogLevelColor; Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
||||||
Console.Write($"[{LogLevelText}]");
|
Console.Write($"[{LogLevelText}]");
|
||||||
Console.ResetColor(); Console.WriteLine($" {b.Message}");
|
Console.ResetColor(); Console.WriteLine($" {LogMessage}");
|
||||||
|
|
||||||
|
if (b.Exception is not null)
|
||||||
|
Console.WriteLine(b.Exception.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
Console.ResetColor(); Console.Write($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] ");
|
||||||
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
Console.ForegroundColor = LogLevelColor; Console.Write($"[{LogLevelText}] ");
|
||||||
Console.ResetColor(); Console.WriteLine(b.Message);
|
Console.ResetColor(); Console.WriteLine(LogMessage);
|
||||||
|
|
||||||
|
if (b.Exception is not null)
|
||||||
|
Console.WriteLine(b.Exception.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = Task.Run(() =>
|
_ = Task.Run(() =>
|
||||||
|
|
@ -162,7 +211,7 @@ public class Logger
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Byte[] FileWrite = Encoding.UTF8.GetBytes($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] [{LogLevelText}] {b.Message}\n");
|
Byte[] FileWrite = Encoding.UTF8.GetBytes($"[{b.TimeOfEvent:dd.MM.yyyy HH:mm:ss}] [{LogLevelText}] {LogMessage}\n");
|
||||||
if (OpenedFile != null)
|
if (OpenedFile != null)
|
||||||
{
|
{
|
||||||
await OpenedFile.WriteAsync(FileWrite.AsMemory(0, FileWrite.Length));
|
await OpenedFile.WriteAsync(FileWrite.AsMemory(0, FileWrite.Length));
|
||||||
|
|
@ -192,6 +241,7 @@ public class Logger
|
||||||
});
|
});
|
||||||
|
|
||||||
GC.KeepAlive(_loggerObjects.LogsToPost);
|
GC.KeepAlive(_loggerObjects.LogsToPost);
|
||||||
|
return new Logger();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -218,6 +268,17 @@ public class Logger
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add blacklisted string to censor automatically
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="blacklist"></param>
|
||||||
|
public static void AddBlacklist(string blacklist)
|
||||||
|
{
|
||||||
|
_loggerObjects.Blacklist.Add(blacklist);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Changes the log level
|
/// Changes the log level
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -229,35 +290,19 @@ public class Logger
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Log without any LogLevel
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sender"></param>
|
|
||||||
/// <param name="message"></param>
|
|
||||||
public static void Log(string message)
|
|
||||||
{
|
|
||||||
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
|
||||||
{
|
|
||||||
TimeOfEvent = DateTime.Now,
|
|
||||||
LogLevel = LoggerObjects.LogLevel.NONE,
|
|
||||||
Message = message
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Log with debug log level
|
/// Log with debug log level
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sender"></param>
|
/// <param name="sender"></param>
|
||||||
/// <param name="message"></param>
|
/// <param name="message"></param>
|
||||||
public static void LogDebug(string message)
|
public static void LogDebug(string message, Exception? exception = null)
|
||||||
{
|
{
|
||||||
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
||||||
{
|
{
|
||||||
TimeOfEvent = DateTime.Now,
|
TimeOfEvent = DateTime.Now,
|
||||||
LogLevel = LoggerObjects.LogLevel.DEBUG,
|
LogLevel = LoggerObjects.LogLevel.DEBUG,
|
||||||
Message = message
|
Message = message,
|
||||||
|
Exception = exception
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -268,13 +313,14 @@ public class Logger
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sender"></param>
|
/// <param name="sender"></param>
|
||||||
/// <param name="message"></param>
|
/// <param name="message"></param>
|
||||||
public static void LogInfo(string message)
|
public static void LogInfo(string message, Exception? exception = null)
|
||||||
{
|
{
|
||||||
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
||||||
{
|
{
|
||||||
TimeOfEvent = DateTime.Now,
|
TimeOfEvent = DateTime.Now,
|
||||||
LogLevel = LoggerObjects.LogLevel.INFO,
|
LogLevel = LoggerObjects.LogLevel.INFO,
|
||||||
Message = message
|
Message = message,
|
||||||
|
Exception = exception
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -285,13 +331,14 @@ public class Logger
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sender"></param>
|
/// <param name="sender"></param>
|
||||||
/// <param name="message"></param>
|
/// <param name="message"></param>
|
||||||
public static void LogWarn(string message)
|
public static void LogWarn(string message, Exception? exception = null)
|
||||||
{
|
{
|
||||||
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
||||||
{
|
{
|
||||||
TimeOfEvent = DateTime.Now,
|
TimeOfEvent = DateTime.Now,
|
||||||
LogLevel = LoggerObjects.LogLevel.WARN,
|
LogLevel = LoggerObjects.LogLevel.WARN,
|
||||||
Message = message
|
Message = message,
|
||||||
|
Exception = exception
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -302,13 +349,14 @@ public class Logger
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sender"></param>
|
/// <param name="sender"></param>
|
||||||
/// <param name="message"></param>
|
/// <param name="message"></param>
|
||||||
public static void LogError(string message)
|
public static void LogError(string message, Exception? exception = null)
|
||||||
{
|
{
|
||||||
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
||||||
{
|
{
|
||||||
TimeOfEvent = DateTime.Now,
|
TimeOfEvent = DateTime.Now,
|
||||||
LogLevel = LoggerObjects.LogLevel.ERROR,
|
LogLevel = LoggerObjects.LogLevel.ERROR,
|
||||||
Message = message
|
Message = message,
|
||||||
|
Exception = exception
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -319,13 +367,55 @@ public class Logger
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sender"></param>
|
/// <param name="sender"></param>
|
||||||
/// <param name="message"></param>
|
/// <param name="message"></param>
|
||||||
public static void LogFatal(string message)
|
public static void LogFatal(string message, Exception? exception = null)
|
||||||
{
|
{
|
||||||
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
||||||
{
|
{
|
||||||
TimeOfEvent = DateTime.Now,
|
TimeOfEvent = DateTime.Now,
|
||||||
LogLevel = LoggerObjects.LogLevel.FATAL,
|
LogLevel = LoggerObjects.LogLevel.FATAL,
|
||||||
Message = message
|
Message = message,
|
||||||
|
Exception = exception
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Log with standard Microsoft.Extensions.Logging format
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TState"></typeparam>
|
||||||
|
/// <param name="logLevel"></param>
|
||||||
|
/// <param name="eventId"></param>
|
||||||
|
/// <param name="state"></param>
|
||||||
|
/// <param name="exception"></param>
|
||||||
|
/// <param name="formatter"></param>
|
||||||
|
public void Log<TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
|
||||||
|
{
|
||||||
|
_loggerObjects.LogsToPost.Add(new LoggerObjects.LogEntry
|
||||||
|
{
|
||||||
|
TimeOfEvent = DateTime.Now,
|
||||||
|
LogLevel = logLevel switch
|
||||||
|
{
|
||||||
|
Microsoft.Extensions.Logging.LogLevel.Debug => LoggerObjects.LogLevel.DEBUG2,
|
||||||
|
Microsoft.Extensions.Logging.LogLevel.Trace => LoggerObjects.LogLevel.TRACE,
|
||||||
|
Microsoft.Extensions.Logging.LogLevel.Information => LoggerObjects.LogLevel.INFO,
|
||||||
|
Microsoft.Extensions.Logging.LogLevel.Warning => LoggerObjects.LogLevel.WARN,
|
||||||
|
Microsoft.Extensions.Logging.LogLevel.Error => LoggerObjects.LogLevel.ERROR,
|
||||||
|
Microsoft.Extensions.Logging.LogLevel.Critical => LoggerObjects.LogLevel.FATAL,
|
||||||
|
Microsoft.Extensions.Logging.LogLevel.None => LoggerObjects.LogLevel.NONE,
|
||||||
|
_ => throw new NotImplementedException()
|
||||||
|
},
|
||||||
|
Message = $"[{eventId.Id,2}] {formatter(state, exception)}",
|
||||||
|
Exception = exception
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsEnabled(Microsoft.Extensions.Logging.LogLevel logLevel)
|
||||||
|
{
|
||||||
|
return loggerStarted;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IDisposable BeginScope<TState>(TState state)
|
||||||
|
{
|
||||||
|
return default!;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,14 @@
|
||||||
public class LoggerObjects
|
public class LoggerObjects
|
||||||
{
|
{
|
||||||
internal List<LogEntry> LogsToPost = new();
|
internal List<LogEntry> LogsToPost = new();
|
||||||
|
internal List<string> Blacklist = new();
|
||||||
|
|
||||||
public class LogEntry
|
public class LogEntry
|
||||||
{
|
{
|
||||||
public DateTime TimeOfEvent { get; set; }
|
public DateTime TimeOfEvent { get; set; }
|
||||||
public LogLevel LogLevel { get; set; }
|
public LogLevel LogLevel { get; set; }
|
||||||
public string Message { get; set; }
|
public string Message { get; set; }
|
||||||
|
public Exception? Exception { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum LogLevel
|
public enum LogLevel
|
||||||
|
|
@ -18,6 +20,8 @@ public class LoggerObjects
|
||||||
WARN,
|
WARN,
|
||||||
INFO,
|
INFO,
|
||||||
DEBUG,
|
DEBUG,
|
||||||
|
DEBUG2,
|
||||||
|
TRACE,
|
||||||
NONE
|
NONE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
20
LoggerProvider.cs
Normal file
20
LoggerProvider.cs
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Xorog.Logger;
|
||||||
|
public class LoggerProvider : ILoggerProvider
|
||||||
|
{
|
||||||
|
private readonly ConcurrentDictionary<string, Logger> _loggers = new(StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
|
public ILogger CreateLogger(string categoryName)
|
||||||
|
{
|
||||||
|
return _loggers.GetOrAdd(categoryName, name => new Logger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose() => _loggers.Clear();
|
||||||
|
}
|
||||||
|
|
@ -3,9 +3,13 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>disable</Nullable>
|
<Nullable>annotations</Nullable>
|
||||||
<Configurations>Debug;Release;x64</Configurations>
|
<Configurations>Debug;Release;x64</Configurations>
|
||||||
<Platforms>AnyCPU;x64</Platforms>
|
<Platforms>AnyCPU;x64</Platforms>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="6.0.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
Reference in a new issue