Modify LoggerProvider to work with non static

This commit is contained in:
Mira 2022-06-13 11:44:01 +02:00
parent 9e9d10a282
commit fdca37ec62
Signed by untrusted user who does not match committer: Xorog
GPG key ID: 983798ED9C3E7C36
2 changed files with 10 additions and 3 deletions

View file

@ -4,6 +4,8 @@ public class Logger : ILogger
{ {
internal Logger() { } internal Logger() { }
public LoggerProvider _provider { get; internal set; }
private bool loggerStarted = false; private bool loggerStarted = false;
private LogLevel maxLogLevel = LogLevel.DEBUG; private LogLevel maxLogLevel = LogLevel.DEBUG;
@ -29,6 +31,7 @@ public class Logger : ILogger
public static Logger StartLogger(string filePath = "", LogLevel level = LogLevel.DEBUG, DateTime cleanUpBefore = new DateTime(), bool ThrowOnFailedDeletion = false) public static Logger StartLogger(string filePath = "", LogLevel level = LogLevel.DEBUG, DateTime cleanUpBefore = new DateTime(), bool ThrowOnFailedDeletion = false)
{ {
var handler = new Logger(); var handler = new Logger();
handler._provider = new(handler);
if (handler.loggerStarted) if (handler.loggerStarted)
throw new Exception($"The logger is already started"); throw new Exception($"The logger is already started");

View file

@ -9,16 +9,20 @@ using System.Threading.Tasks;
namespace Xorog.Logger; namespace Xorog.Logger;
public class LoggerProvider : ILoggerProvider public class LoggerProvider : ILoggerProvider
{ {
private readonly ConcurrentDictionary<string, Logger> _loggers = new(StringComparer.OrdinalIgnoreCase); internal LoggerProvider(Logger logger)
{
_logger = logger;
}
private Logger _logger { get; set; }
public ILogger CreateLogger(string categoryName) public ILogger CreateLogger(string categoryName)
{ {
return _loggers.GetOrAdd(categoryName, name => new Logger()); return _logger;
} }
public void Dispose() public void Dispose()
{ {
_loggers.Clear();
GC.SuppressFinalize(this); GC.SuppressFinalize(this);
} }
} }