【问题标题】:Serilog - AppSettings MinLevel not workingSerilog - AppSettings MinLevel 不起作用
【发布时间】:2016-05-20 20:38:50
【问题描述】:

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

<!-- 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}" />

【问题讨论】:

    标签: serilog


    【解决方案1】:

    RollingFile 接收器配置本身没有任何“错误” - 它只会按照您的预期记录日志级别为 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 应该始终是所有接收器中的最低级别。

    【讨论】:

    • 真的,你不能在水槽级别设置最低级别吗?
    • 实际上这就是我发布代码的原因。它没有在调试或更高级别记录。它正在记录信息或更高(默认)
    • 我明白你现在在说什么。但是,我的滚动文件确实仍然记录消息,但添加全局最低级别对我的所有接收器都有效。
    • 根据github.com/serilog/serilog/wiki/AppSettings 并通过我的测试确认,您还需要 这在这里得到确认:已解决对于 Github 用户 dstj:github.com/serilog/serilog/issues/454#issuecomment-243561807 我相应地编辑了答案,希望它会被批准。
    • “serilog:minimum-level 应该始终是所有接收器中的最低级别。”。来自github.com/serilog/serilog/wiki/…:“从 Serilog 2.1 开始,可以添加最低级别覆盖来更改某些特定命名空间的最低级别。这是通过设置键 serilog:minimum-level:override: 后跟源上下文前缀来完成的。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2018-07-02
    • 2022-07-07
    相关资源
    最近更新 更多