Отключить 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
и обойти это - он также ничего не будет делать по умолчанию, если вы не назначили ему что-то.