在Serilog中是否有一种设置(有限大小)日志缓冲区的方法,该缓冲区收集指定级别及以上(即DEBUG
)的所有日志事件,但除非发生某个更高级别的事件(即WARNING
),否则不将它们记录到目标接收器中?
基本上我想知道是否有一种方法来复制log4net中BufferingForwardingAppender
的功能。
BufferingForwardingAppender
的等效项,但社区构建了一些sinks可能会有用:
或者,您可以轻松地创建自己的Sink来实现该行为。
在这种情况下,您可能希望查看Serilog.Sinks.Async的代码以获取灵感,因为它向您展示了一种将多个Sinks包装成一个的方法,这将使您有机会在转发到Sinks之前缓冲日志消息。
最后,由于您熟悉Log4Net,您可以将Log4Net与Serilog集成,并使用Log4Net的BufferingForwardingAppender
,方法是使用Log4Net Serilog Sink。
我知道有点晚了,但今天我也在寻找同样的东西,找到了Serilog.Sinks.Buffer,看起来很接近我们想要的(我还没有实际尝试过)。与BufferingForwardingAppender相比,一个限制是,根据文档所说,
从缓冲区刷新的日志事件仅在触发事件之后发送到输出接收器...结果是调试日志事件总是以无序的方式发送,即在稍后的事件和触发事件之后。
这将使直接从文本文件中分析日志变得更加困难 - 您需要首先按时间戳对文件进行排序才能理解它。