2016-04-22 6 views
1

это моя конфигурация serilog:Serilog отдельные файлы прокатные для каждого SourceContext

Log.Logger = new LoggerConfiguration() 
.WriteTo.RollingFile(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, 
        @"Logs\log-{Date}.txt")) 
.MinimumLevel.ControlledBy(LogLevelSwitch) 
.CreateLogger(); 

Я входе, как это:

var log = Serilog.Log.ForContext<SomeClassName>(); 
log.Information("some log text"); 

Мой вопрос:

мне нужна модификация в моей конфигурации для создания отдельных журналов для каждого SourceContext.

Мне нужно войти файлы Somthing как Logs\log-{Date}-{SourceContext}.txt

спасибо профи ...

ответ

3

Один из способов осуществить это, чтобы создать свой собственный ILogEventSink реализации (интерфейс очень прост), который внутренне отправляет к одному из нескольких RollingFileSink s на основе имущества SourceContextLogEvent.

Для его настройки (скажем, вы называете раковина SourceRollingFileSink), вы можете использовать WriteTo.Sink():

Log.Logger = new LoggerConfiguration() 
    .WriteTo.Sink(new SourceRollingFileSink()) 
    .CreateLogger(); 

Там нет реализации вне коробки так что требуется некоторая работа, но она не должна быть сложной , Имейте в виду, что реализации ILogEventSink должны быть потокобезопасными.

+0

Большое спасибо. Я дам ему попробовать – abzarak