Serilog - how to make custom console output format?
Thanks for the direction to @Ruben Bartelink. If anyone else will be wondering how to do such thing here is the simple example:
Enricher:
class SimpleClassEnricher : ILogEventEnricher
{
public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
{
var typeName = logEvent.Properties.GetValueOrDefault("SourceContext").ToString();
var pos = typeName.LastIndexOf('.');
typeName = typeName.Substring(pos + 1, typeName.Length - pos - 2);
logEvent.AddOrUpdateProperty(propertyFactory.CreateProperty("SourceContext", typeName));
}
}
then usage:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.Enrich.With(new SimpleClassEnricher())
.WriteTo.Console(outputTemplate: "{Timestamp:HH:mm:ss} [{Level:u3}] {SourceContext} - {Message:lj}{NewLine}{Exception}")
.CreateLogger();