2016-08-29 4 views
1

Я пытаюсь иметь уникальное имя в журнале для каждого из процессов, запущенных одновременно на машине. Я попытался установить pathFormat в app.config примерно наКак установить имя файла для прокатки уникальным с помощью идентификатора процесса

<add key="MyApp:serilog:write-to:RollingFile.pathFormat" 
    value="..\log\MyApp.{MachineName}-{ThreadId}-{Date}.log" /> 

Это не помогло.

Любая идея? Я не могу найти ничего в документации.

Возможность записи данных из нескольких источников не потребовала бы журнала для каждого процесса. Поскольку (на данный момент) я застрял с 1.5, я предоставляю определенный путь при настройке файла Rolling.

new LoggerConfiguration() 
    .ReadFrom.AppSettings(AppName) 
    .WriteTo.RollingFile(path) 

Мне просто нужно предоставить имя машины и идентификатор потока, чтобы получить уникальное имя файла журнала.

+1

(Serilog вкладчик здесь) - просто интересно, почему вы застряли с 1,5? В .NET 4.0? Благодаря! :-) –

ответ

2

На данный момент RollingFile sink, который поставляется с Serilog, поддерживает только тег {date} для динамического качения файла.

Таким образом, если вам нужна другая (динамическая) стратегия для рулона (например, идентификатор потока и т. Д.), Вы будете писать свою собственную раковину (вы можете сделать fork the default one и внести свои изменения).

Для названия машины, которое обычно не изменяется часто, вы можете избежать использования переменной окружения COMPUTERNAME и позволить Serilog расширять ее для вас.

например.

<add key="MyApp:serilog:write-to:RollingFile.pathFormat" 
    value="..\log\MyApp.%COMPUTERNAME%-{Date}.log" /> 

Конечно, переменная окружения будет расширена на момент инициализации Serilog конфигурации, так что если изменения имени машины в то время как ваше приложение работает, вы все равно будете прокатке файл со старым именем, пока вы не перезапустите приложение (или, по крайней мере, до тех пор, пока ваше приложение не повторит инициализацию Serilog).


пс: Не уверен, что, если помогает, но Serilog v2.0 вводит способ обмена и тот же файл журнала через процессы:

.WriteTo.RollingFile("log-{Date}.txt", shared: true)