Logger

Bibliothek fürs Logging. Diese enthält sowohl die Abstraktionen für den Logger und die Konfiguration (über Code), als auch die Implementierung mit NLog.

Umgesetzte Services

  • ILogger<> / ILogger
    Allgemeine und generische Abstraktion für Logger
  • ILoggerConfiguration
    - Abstraktion, um die Logger-Konfiguration definieren und ändern zu können (Fluent)

Installation

Install-Package WD.Logging -Version 0.2.2

Verwendung

Registrierung (IoC)

...
containerRegistry.RegisterSingleton<ILoggerConfiguration, NLogLoggerConfiguration>();
containerRegistry.RegisterSingleton(typeof(ILogger<>), typeof(NLogLoggerAdapter<>));
...

Konfiguration

private void InitLogger()
{
    var logConfiguration = Container.Resolve<ILoggerConfiguration>();
    logConfiguration.ApplyConfiguration(options =>
        options
            .WithFile("RaumAkustik.log")
            .WithLevel(LogLevel.Trace)
            .WithMaxSize(new FileSize { SizeType = SizeType.MibiByte, Size = 2 })
            .WithArchiveCount(6)
            .Compress(false)
            .ArchiveOnStart(false)
            .WithLogMessageLayout("${longdate};${logger};${message}")
            .WithFilter("MyAssembly.Namespace.MyClass*")
#if DEBUG
            .AddDebugTarget()
#endif
    );
}

Konfigurationsänderung

private readonly ILoggerConfiguration _loggerConfiguration;
...
private void SetLogLevel(LogLevel level, string newFilter)
{
    _loggerConfiguration.ChangeConfiguration(options =>
        options.WithLevel(level)
            .WithFilter(newFilter)
    );
}

Logger-Nutzung im Code

public class MyClass
{
    private readonly ILogger _looger;

    public MyClass(ILogger<MyClass> logger)
    {
        _logger = logger;
    }
...
    private async Task SomeMethod()
    {
        try {
            _logger.Trace("Start processing");

            var data = await ProcessSomeData();

            _logger.Trace("Finsih processing");
        } catch (Exception ex){
            _logger.Error(ex, "Processing failed for {0}", nameof(ProcessSomeData));
        }
    }
...