我有一个基本的蚕豆使用场景:记录来自Web应用程序的消息。在生产中,我将日志级别设置为"信息"。
现在我的问题:是否可以在发生错误后将最后 ~100 条调试/跟踪消息写入日志,以便在错误发生之前我有一个简短的详细消息历史记录。这将使我的日志保持干净,并为我提供足够的信息来跟踪错误。
几年前,我为另一个应用程序/日志记录框架创建了这样的机制,但我很好奇Serilog是否已经可以做到这一点。
如果不是,管道中的哪个位置将是实现此类逻辑的位置。
这不是 Serilog 开箱即用的东西,但可以通过编写一个自定义接收器来实现,该接收器包装所有其他接收器并缓存最近的 ~100 条Debug
消息,并在出现Error
消息时将它们转发到接收器。
您可能需要查看Serilog.Sinks.Async的代码以获取灵感,因为它向您展示了一种将多个接收器包装成一个接收器的方法。