Files
homework-backend/Logger/CompositeLogger.cs
2026-03-28 21:49:58 +01:00

48 lines
1.3 KiB
C#

namespace Logger;
/// <summary>
/// Logger that writes to multiple loggers simultaneously
/// </summary>
public class CompositeLogger : ILogger
{
private readonly List<ILogger> _loggers;
public CompositeLogger(params ILogger[] loggers)
{
_loggers = new List<ILogger>(loggers ?? Array.Empty<ILogger>());
}
public void AddLogger(ILogger logger)
{
if (logger != null)
_loggers.Add(logger);
}
public void RemoveLogger(ILogger logger)
{
_loggers.Remove(logger);
}
public void Trace(string message) => Log(LogLevel.Trace, message);
public void Debug(string message) => Log(LogLevel.Debug, message);
public void Info(string message) => Log(LogLevel.Info, message);
public void Warning(string message) => Log(LogLevel.Warning, message);
public void Error(string message) => Log(LogLevel.Error, message);
public void Fatal(string message) => Log(LogLevel.Fatal, message);
public void Log(LogLevel level, string message)
{
foreach (var logger in _loggers)
{
try
{
logger.Log(level, message);
}
catch (Exception ex)
{
Console.Error.WriteLine($"Error in logger: {ex.Message}");
}
}
}
}