79 lines
2.3 KiB
C#
79 lines
2.3 KiB
C#
namespace Млаумчерб.Клиент;
|
||
|
||
public class LauncherLogger : ILogger
|
||
{
|
||
private CompositeLogger _compositeLogger;
|
||
private FileLogger _fileLogger;
|
||
public static readonly IOPath LogsDirectory = "launcher_logs";
|
||
public IOPath LogfileName => _fileLogger.LogfileName;
|
||
|
||
public LauncherLogger()
|
||
{
|
||
_fileLogger = new FileLogger(LogsDirectory, "млаумчерб");
|
||
ILogger[] loggers =
|
||
[
|
||
_fileLogger,
|
||
#if DEBUG
|
||
new ConsoleLogger(),
|
||
#endif
|
||
];
|
||
_compositeLogger = new CompositeLogger(loggers);
|
||
|
||
#if DEBUG
|
||
DebugLogEnabled = true;
|
||
#endif
|
||
}
|
||
|
||
public delegate void LogHandler(string context, LogSeverity severity, object message, ILogFormat format);
|
||
public event LogHandler? OnLogMessage;
|
||
|
||
public void Log(string context, LogSeverity severity, object message, ILogFormat format)
|
||
{
|
||
_compositeLogger.Log(context, severity, message, format);
|
||
bool isEnabled = severity switch
|
||
{
|
||
LogSeverity.Debug => DebugLogEnabled,
|
||
LogSeverity.Info => InfoLogEnabled,
|
||
LogSeverity.Warn => WarnLogEnabled,
|
||
LogSeverity.Error => ErrorLogEnabled,
|
||
_ => throw new ArgumentOutOfRangeException(nameof(severity), severity, null)
|
||
};
|
||
if(isEnabled)
|
||
OnLogMessage?.Invoke(context, severity, message, format);
|
||
}
|
||
|
||
public void Dispose()
|
||
{
|
||
_compositeLogger.Dispose();
|
||
}
|
||
|
||
public ILogFormat Format
|
||
{
|
||
get => _compositeLogger.Format;
|
||
set => _compositeLogger.Format = value;
|
||
}
|
||
|
||
public bool DebugLogEnabled
|
||
{
|
||
get => _compositeLogger.DebugLogEnabled;
|
||
set => _compositeLogger.DebugLogEnabled = value;
|
||
}
|
||
|
||
public bool InfoLogEnabled
|
||
{
|
||
get => _compositeLogger.InfoLogEnabled;
|
||
set => _compositeLogger.InfoLogEnabled = value;
|
||
}
|
||
|
||
public bool WarnLogEnabled
|
||
{
|
||
get => _compositeLogger.WarnLogEnabled;
|
||
set => _compositeLogger.WarnLogEnabled = value;
|
||
}
|
||
|
||
public bool ErrorLogEnabled
|
||
{
|
||
get => _compositeLogger.ErrorLogEnabled;
|
||
set => _compositeLogger.ErrorLogEnabled = value;
|
||
}
|
||
} |