如何保存通常由 Loglevel 排除的其他消息,以防出现错误



我有一个基本的蚕豆使用场景:记录来自Web应用程序的消息。在生产中,我将日志级别设置为"信息"。

现在我的问题:是否可以在发生错误后将最后 ~100 条调试/跟踪消息写入日志,以便在错误发生之前我有一个简短的详细消息历史记录。这将使我的日志保持干净,并为我提供足够的信息来跟踪错误。

几年前,我为另一个应用程序/日志记录框架创建了这样的机制,但我很好奇Serilog是否已经可以做到这一点。

如果不是,管道中的哪个位置将是实现此类逻辑的位置。

这不是 Serilog 开箱即用的东西,但可以通过编写一个自定义接收器来实现,该接收器包装所有其他接收器并缓存最近的 ~100 条Debug消息,并在出现Error消息时将它们转发到接收器。

您可能需要查看Serilog.Sinks.Async的代码以获取灵感,因为它向您展示了一种将多个接收器包装成一个接收器的方法。

最新更新