Modify LoggerProvider to work with non static
This commit is contained in:
parent
9e9d10a282
commit
fdca37ec62
2 changed files with 10 additions and 3 deletions
|
|
@ -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");
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue