【问题标题】:Is there a SeriLog equivalent of log4net's BufferingForwardingAppender for detailed logging only on warning/error?是否有与 log4net 的 BufferingForwardingAppender 等效的 SeriLog 仅用于详细记录警告/错误?
【发布时间】:2020-01-20 11:43:56
【问题描述】:

Serilog 中有没有办法设置一个(有限大小)日志缓冲区,收集指定级别及以上(即DEBUG)的所有日志事件,但除非某个更高级别,否则不会将它们记录到目标接收器事件发生(即WARNING)?

基本上我在问是否有办法从 log4net 复制 BufferingForwardingAppender 功能。

【问题讨论】:

    标签: .net log4net serilog


    【解决方案1】:

    截至撰写本文时,Serilog 还没有与 Log4Net 的 BufferingForwardingAppender 开箱即用的等效项,但社区构建的一些接收器可能有用:

    另外,create your own Sink 应该很容易实现该行为。

    在这种情况下,您可能需要查看Serilog.Sinks.Async 的代码以获得灵感,因为它向您展示了一种将多个接收器包装到一个接收器中的方法,这将使您有机会在转发到接收器之前缓冲日志消息。

    最后,由于您熟悉 Log4Net,您可以将 Log4Net 与 Serilog 集成,并通过 Log4Net Serilog Sink 使用 Log4Net 的 BufferingForwardingAppender

    【讨论】:

    • 干杯。也许现在坚持使用 log4net 对我们来说是一个更好的选择。
    【解决方案2】:

    我知道有点晚了,但我今天正在寻找同样的东西,发现Serilog.Sinks.Buffer,看起来非常接近我们想要的(我还没有真正尝试过)。与 BufferingForwardingAppender 相比,一个限制是 according to the docs

    从缓冲区刷新的日志事件被发送到输出 仅在触发事件后才下沉...结果是调试 日志事件总是最终被乱序发送,即。后来 事件和触发事件之后。

    这会使直接从文本文件中读取日志进行分析变得更加困难——您需要先按时间戳对文件进行排序才能理解它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      相关资源
      最近更新 更多