Отключить Serilog для выпуска продукта

Является ли отсутствие каких-либо определенных приемников правильным способом отключения Serilog?

Я видел этот вопрос:

Как отключить Serilog?

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

Мы конфигурируем Serilog, используя конфигурационные файлы app / web, поэтому в сборке Debug это выглядит примерно так:

<add key="serilog:minimum-level" value="Verbose" />
<add key="serilog:write-to:RollingFile.pathFormat"
     value="%ProgramData%\Product\debug\AppName-{Date}.log" />
<add key="serilog:write-to:RollingFile.retainedFileCountLimit" value="10" />

Эти строки обрабатываются так:

new LoggerConfiguration().ReadFrom.AppSettings()...

Когда мы генерируем файлы конфигурации приложения / веб-интерфейса для поставки вместе с продуктом, достаточно ли удалить какие-либо приемники из файлов конфигурации, чтобы эффективно отключить Serilog?

Думаю, мне интересно, есть ли какая-то установка "выключено", чтобы первое, что делает вызов Serilog, было "если (выключено) return;", или что-то в этом роде? Или отсутствие каких-либо определенных поглотителей в основном одно и то же? Моя цель - настроить все так, чтобы все вызовы в Serilog были максимально быстрыми, когда у нас отключено ведение журнала.

1 ответ

Лучший вариант - просто ничего не делать; не создавайте LoggerConfiguration или назначить Log.Logger совсем. Это приведет ко всем Log методы делают как можно меньше работы.

Если вам нужен ILoggerпросто возьми Log.Logger и обойти это - он также ничего не будет делать по умолчанию, если вы не назначили ему что-то.

Другие вопросы по тегам