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 LoggerILoggerConfiguration
- 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));
}
}
...