Files
I150/srcs/RobotNet10/FleetManager/RobotNet10.FleetManager/Services/Logger.cs
2026-07-03 16:37:12 +07:00

109 lines
3.2 KiB
C#

namespace RobotNet10.FleetManager.Services;
public class Logger<T>(ILogger<T> Logger) where T : class
{
public event Action? LoggerUpdate;
public void Write(string message, LogLevel level)
{
switch (level)
{
case LogLevel.Trace:
if(Logger.IsEnabled(LogLevel.Trace))Logger.LogTrace("{mes}", message);
break;
case LogLevel.Debug:
if (Logger.IsEnabled(LogLevel.Debug)) Logger.LogDebug("{mes}", message);
break;
case LogLevel.Information:
if (Logger.IsEnabled(LogLevel.Information)) Logger.LogInformation("{mes}", message);
break;
case LogLevel.Warning:
if (Logger.IsEnabled(LogLevel.Warning)) Logger.LogWarning("{mes}", message);
break;
case LogLevel.Error:
if (Logger.IsEnabled(LogLevel.Error)) Logger.LogError("{mes}", message);
break;
case LogLevel.Critical:
if (Logger.IsEnabled(LogLevel.Critical)) Logger.LogCritical("{mes}", message);
break;
}
LoggerUpdate?.Invoke();
}
public void Write(string message)
{
Write(message, LogLevel.Information);
}
public async Task WriteAsync(string message)
{
var write = Task.Run(() => Write(message));
await write.WaitAsync(CancellationToken.None);
}
public async Task TraceAsync(string message)
{
var write = Task.Run(() => Write(message, LogLevel.Trace));
await write.WaitAsync(CancellationToken.None);
}
public async Task DebugAsync(string message)
{
var write = Task.Run(() => Write(message, LogLevel.Debug));
await write.WaitAsync(CancellationToken.None);
}
public async Task InfoAsync(string message)
{
var write = Task.Run(() => Write(message, LogLevel.Information));
await write.WaitAsync(CancellationToken.None);
}
public async Task WarningAsync(string message)
{
var write = Task.Run(() => Write(message, LogLevel.Warning));
await write.WaitAsync(CancellationToken.None);
}
public async Task ErrorAsync(string message)
{
var write = Task.Run(() => Write(message, LogLevel.Error));
await write.WaitAsync(CancellationToken.None);
}
public async Task CriticalAsync(string message)
{
var write = Task.Run(() => Write(message, LogLevel.Critical));
await write.WaitAsync(CancellationToken.None);
}
public void Trace(string message)
{
Write(message, LogLevel.Trace);
}
public void Debug(string message)
{
Write(message, LogLevel.Debug);
}
public void Info(string message)
{
Write(message, LogLevel.Information);
}
public void Warning(string message)
{
Write(message, LogLevel.Warning);
}
public void Error(string message)
{
Write(message, LogLevel.Error);
}
public void Critical(string message)
{
Write(message, LogLevel.Critical);
}
}