【问题标题】:How can I get "controlLevelSwitch" to work in the Serilog Seq sink如何让“controlLevelSwitch”在 Serilog Seq 接收器中工作
【发布时间】:2017-12-25 18:12:04
【问题描述】:

我的应用程序设置了 Serilog 日志记录和 Seq 接收器(除了 ColoredConsole 和 RollingFile 接收器)。一切都很好,但从 Seq 切换的最低日志级别。

我的日志记录级别开关设置为“详细”的起始最低级别,以确保将任何内容发送到 seq。

在 API 密钥的设置中,最低级别设置为“调试”,而 seq 仅显示级别为“调试”或更高级别的事件。

但是在应用程序端,所有内容仍然被记录,最小日志级别没有变化。我可以在控制台上看到“Verbose”,seq sink 的滚动日志文件和我设置的单独的滚动日志文件。无论我发送由 seq 拾取的“调试”级别事件还是等待几分钟,这都不会改变。

这是我的配置:

var levelSwitch = new LoggingLevelSwitch(LogEventLevel.Verbose);
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.ControlledBy(levelSwitch)
    .Enrich.WithExceptionDetails()
    .WriteTo.ColoredConsole()
    .WriteTo.RollingFile(@".\log\log-{Date}.txt")
    .WriteTo.Seq("http://localhost:5341", bufferBaseFilename: @".\temp\seqlog", apiKey: "...", controlLevelSwitch: levelSwitch)
    .CreateLogger();

Log.Logger.Verbose("TEST!!!");

【问题讨论】:

    标签: serilog seq seq-logging


    【解决方案1】:

    在某些事件已经到达 Seq 之前,Seq 接收器不会设置开关 - 电平控制不是即时的。在实践中,这可能意味着您必须经过几秒钟才能看到其他接收器的输出发生变化。

    【讨论】:

    • 是的,我知道,应该澄清这一点。我确实看到了调试级别的事件,Seq 根据该 API 密钥的设置正确过滤掉了所有较低的事件。我所期望的是应用程序内的最低日志级别也会在第一个事件到达 Seq 后或几分钟后更改为调试。这不会发生。
    • 感谢您的跟进。看起来背景级别检查没有按预期工作 - 提出并修复 github.com/serilog/serilog-sinks-seq/issues/75,不久将在接收器的 3.3.3 版中推出。
    • 哇,感谢您的快速更新!不幸的是,它仍然不能正常工作。在这里解释太长了,我希望没关系我把它交给了 GitHub。 https://github.com/serilog/serilog-sinks-seq/issues/75
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多