Пользовательский контекст Serilog в скользящем имени файла, контекст Nlog

Аналогично Как вывести имя класса источника события в serilog RollingFile outputTemplate?, но вместо файла журнала (outputTemplate) я хочу назвать файл.

Кроме того, я пытался переключаться между использованием WriteTo.LiterateConsole + WriteTo.RollingFile и WriteTo.NLog, сохраняя этот пользовательский контекст.

Однако для выполнения пользовательского именования файлов мне в основном нужно указать имя при инициализации регистратора, например так:

var c = new LoggerConfiguration()
    .Enrich.WithProperty(/* some standard stuff */)
    .WriteTo.LiterateConsole(minLevel)
    .WriteTo.RollingFile(string.IsNullOrEmpty(customName) ? "logs\log-{Date}.txt" : "logs\"+customName+".log.{Date}.txt") // <-- would have thought I could use `{SourceContext}` as placeholder...
    .CreateLogger()
    .ForContext(Constants.SourceContextPropertyName, customName) // <-- not sure if I need this here
    ;

Я хочу сделать что-то подобное при подключении NLog, поэтому я могу воспользоваться моей существующей строкой конфигурации NLog:

archiveFileName="${basedir}/logs/archives/${logger}.log.{#####}.txt"

с инициализацией так:

var c = new LoggerConfiguration()
    .Enrich.WithProperty(/* some standard stuff */)
    .Enrich.WithProperty(Constants.SourceContextPropertyName, customName) // <-- is this the trick?
    .WriteTo.Nlog(minLevel)
    .CreateLogger()
    .ForContext(Constants.SourceContextPropertyName, customName) // <-- not sure if this is redundant with enrichment above
    ;

person drzaus    schedule 06.07.2015    source источник
comment
Это ответ только по ссылке, поэтому я просто прокомментирую, но я нашел это, найдя ваш вопрос: Serilog Sinks ContextRollingFile — выглядит многообещающе.   -  person Jeff    schedule 04.01.2017
comment
Автор этой ссылки @sander-schutten на самом деле ответил на мой вопрос, но модератор удалил его?   -  person drzaus    schedule 05.01.2017