WebDucer library for logging in Xamarin.Forms (Prism)
A generic abstraction for the logger to be used with dependency injection in Xamarin.Forms (e.g. with Prism.Forms).
States
Service | Last | Develop | Master |
---|---|---|---|
AppVeyor | |||
SonarCube coverage | |||
SonarCube technical debt | |||
SonarCube Quality Gate | |||
NuGet |
Services
ILogger<>
/ILogger
- Abstraction for loggerILoggerConfiguration
- Abstraction, to configure the current logger with code
Sample
Registration
...
containerRegistry.RegisterSingleton<ILoggerConfiguration, NLogLoggerConfiguration>();
containerRegistry.RegisterSingleton(typeof(ILogger<>), typeof(NLogLoggerAdapter<>));
...
Configuration
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
);
}
Change configuration
private void SetLogLevel(LogLevel level, string newFilter)
{
_loggerConfiguration.ChangeConfiguration(options =>
options.WithLevel(level)
.WithFilter(newFilter)
);
}
Usage
...
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));
}
}
...