在产品发布时禁用Serilog

本文关键字:Serilog 布时禁 | 更新日期: 2023-09-27 18:13:23

缺少任何已定义的接收器是禁用Serilog的正确方法吗?

我确实看到了这个问题:

如何关闭Serilog?

但是我更多的是关于如何在发布产品时配置Serilog,以便在默认情况下,在使用产品时不创建日志文件,并且调用Serilog的开销尽可能少。

我们使用app/web配置文件配置Serilog,所以在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()...

当我们生成与产品一起发布的应用/web配置文件时,从配置文件中删除任何sink以有效禁用Serilog是否足够?

我想我想知道是否有某种"关闭"设置,以便对Serilog的调用的第一件事是"if (off) return;",或者沿着这些行?还是说,没有任何明确的碳汇基本上是一样的?我的目标是配置一些东西,以便当我们"禁用"日志记录时,所有对Serilog的调用都尽可能快。

在产品发布时禁用Serilog

最好的选择就是什么都不做;不要创建LoggerConfiguration或分配Log.Logger。这将导致所有Log方法做尽可能少的工作。

如果你需要一个ILogger,只需抓取Log.Logger并传递它-默认情况下它也不会做任何事情,除非你给它分配了一些东西。