DTLib/DTLib.Logging/Loggers/ConsoleWrapperLogger.cs
2024-01-23 13:55:16 +06:00

46 lines
1.2 KiB
C#

using DTLib.Logging;
namespace launcher_client;
public interface IConsoleWrapper : IDisposable
{
public void WriteLine(string msg);
}
public class ConsoleWrapperLogger : ILogger
{
public bool DebugLogEnabled { get; set; } = false;
public bool InfoLogEnabled { get; set; } = true;
public bool WarnLogEnabled { get; set; } = true;
public bool ErrorLogEnabled { get; set; } = true;
public ILogFormat Format { get; set; }
private readonly IConsoleWrapper _consoleWrapper;
public ConsoleWrapperLogger(IConsoleWrapper consoleWrapper, ILogFormat format)
{
_consoleWrapper = consoleWrapper;
Format = format;
}
public ConsoleWrapperLogger(IConsoleWrapper consoleWrapper)
: this(consoleWrapper, new DefaultLogFormat())
{}
public void Log(string context, LogSeverity severity, object message, ILogFormat format)
{
if(!this.CheckSeverity(severity))
return;
var msg = format.CreateMessage(context, severity, message);
lock (_consoleWrapper)
_consoleWrapper.WriteLine(msg);
}
public void Dispose()
{
_consoleWrapper.Dispose();
}
~ConsoleWrapperLogger() => Dispose();
}