|
|
|
|
@ -12,8 +12,12 @@ namespace Common.Logger; |
|
|
|
|
public class SerilogLogger : Logging.ILogger |
|
|
|
|
{ |
|
|
|
|
private readonly LoggingLevelSwitch loggingLevelSwitch; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public event EventHandler<NewLogEntryEventArgs>? NewLogEntry; |
|
|
|
|
|
|
|
|
|
public LogLevel CurrentMinimumLogLevel { get; private set; } = LogLevel.Undefined; |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Constructor of a Logger that uses the Serilog package to create log entries and distributes them into different sinks. |
|
|
|
|
/// </summary> |
|
|
|
|
@ -67,6 +71,7 @@ public class SerilogLogger : Logging.ILogger |
|
|
|
|
public void SetMinimumLogLevel(LogLevel newMinimumLogLevel) |
|
|
|
|
{ |
|
|
|
|
this.loggingLevelSwitch.MinimumLevel = this.ConvertGenericToSerilogLogLevel(newMinimumLogLevel); |
|
|
|
|
this.CurrentMinimumLogLevel = newMinimumLogLevel; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private LogEventLevel ConvertGenericToSerilogLogLevel(LogLevel newMinimumLogLevel) => newMinimumLogLevel switch |
|
|
|
|
@ -88,6 +93,7 @@ public class SerilogLogger : Logging.ILogger |
|
|
|
|
private void CreateLogEntry(LogEntry logEntry) |
|
|
|
|
{ |
|
|
|
|
var serilogEventLevel = this.ConvertGenericToSerilogLogLevel(logEntry.LogLevel); |
|
|
|
|
|
|
|
|
|
// formatting is done inside logEntry.ToString() method => therefore log plain message text with right category |
|
|
|
|
switch (serilogEventLevel) |
|
|
|
|
{ |
|
|
|
|
@ -118,6 +124,12 @@ public class SerilogLogger : Logging.ILogger |
|
|
|
|
default: |
|
|
|
|
throw new NotImplementedException($"'{nameof(CreateLogEntry)}()' does not contain an implementation for {nameof(LogEventLevel)} {serilogEventLevel}."); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Raise event (only if the log is wanted due to the configured log level) |
|
|
|
|
if (logEntry.LogLevel <= this.CurrentMinimumLogLevel) |
|
|
|
|
{ |
|
|
|
|
this.NewLogEntry?.Invoke(this, new NewLogEntryEventArgs(logEntry)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|