Аналогично Как вывести имя класса источника события в 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
;