SeriLog是否有类似于log4net的BufferingForwardingAppender的功能,只记录警告/错误级别的详细日志?

3

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

基本上我想知道是否有一种方法来复制log4net中BufferingForwardingAppender的功能。

2个回答

2
截至目前,Serilog没有内置Log4Net中BufferingForwardingAppender的等效项,但社区构建了一些sinks可能会有用:

或者,您可以轻松地创建自己的Sink来实现该行为。

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

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


干杯。也许现在对我们来说,坚持使用log4net是一个更好的选择。 - user12747612

0

我知道有点晚了,但今天我也在寻找同样的东西,找到了Serilog.Sinks.Buffer,看起来很接近我们想要的(我还没有实际尝试过)。与BufferingForwardingAppender相比,一个限制是,根据文档所说,

从缓冲区刷新的日志事件仅在触发事件之后发送到输出接收器...结果是调试日志事件总是以无序的方式发送,即在稍后的事件和触发事件之后。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接