Serilog - AppSettings MinLevel 不工作

Serilog - AppSettings MinLevel not working

我正在尝试连接我的接收器,但我的滚动文件接收器似乎没有记录我的调试消息(仅信息及以上)。我的配置有问题吗?

<!-- Serilog Configuration -->
<add key="serilog:using:Email" value="Serilog.Sinks.Email" />

<!-- Configure Serilog Email Sink -->
<add key="serilog:write-to:Email" />
<add key="serilog:write-to:Email.mailServer" value="***" />
<add key="serilog:write-to:Email.toEmail" value="***" />
<add key="serilog:write-to:Email.fromEmail" value="***" />
<add key="serilog:write-to:Email.mailSubject" value="Comply360 Portal Endpoint (DEV)" />
<add key="serilog:write-to:Email.restrictedToMinimumLevel" value="Warning" />
<add key="serilog:write-to:Email.outputTemplate" value="{Timestamp:HH:mm:ss} [{Level}] [{SourceContext}] [{CorrelationId}] {Message}{NewLine}{Exception}" />

<!-- Configure Serilog RollingFile Sink -->
<add key="serilog:write-to:RollingFile" />
<add key="serilog:write-to:RollingFile.restrictedToMinimumLevel" value="Debug" />
<add key="serilog:write-to:RollingFile.pathFormat" value="C:\Logs\comply360-portal-{Date}.txt" />
<add key="serilog:write-to:RollingFile.outputTemplate" value="{Timestamp:HH:mm:ss} [{Level}] [{SourceContext}] [{CorrelationId}] {Message}{NewLine}{Exception}" />

您的 RollingFile 接收器配置本身没有任何 "wrong" - 它只会记录日志级别 Debug 或更高级别的消息(即它不会记录 Verbose 消息)如您所愿。

但是,一般来说,Serilog 的最低日志级别是 Information,因此它甚至不会发送到您的接收器。

您需要将 Serilog 的默认最低级别更改为至少 Debug,在您的情况下:

<add key="serilog:minimum-level" value="Debug" />

您的最终配置应如下所示:

<add key="serilog:minimum-level" value="Debug" />
<add key="serilog:write-to:RollingFile" />
<add key="serilog:write-to:RollingFile.restrictedToMinimumLevel" value="Debug" />
<add key="serilog:write-to:RollingFile.pathFormat" value="C:\Logs\log-portal-{Date}.txt" />
<add key="serilog:write-to:RollingFile.outputTemplate" value="{Timestamp:HH:mm:ss} [{Level}] [{SourceContext}] [{CorrelationId}] {Message}{NewLine}{Exception}" />

当然,如果您稍后决定添加任何记录 Verbose 消息及以上消息的接收器,您也需要将最低级别更改为 Verbose

serilog:minimum-level 应始终是所有接收器的最低级别。