我想在我的消息传递应用程序中添加跟踪功能。我使用的每条消息都有一个唯一的标识符,该标识符被转发到后续消息(原始消息产生的消息)。
为了能够跨多个进程和可能的服务器监视消息的生命周期行为,我想使用log4net远程处理程序。
我可以使用一个记录器并在消息本身中编码消息ID:
Logger: "MessageLivetime"
Message: "SomeId | message text")
但是我认为如果我为每条消息创建一个记录器会很聪明:
Logger: "MessageLivetime.SomeId"
Message: "message text")
然而,由于LogManager
类没有删除记录器的方法,我担心会遇到问题,因为会创建数千个废弃的记录器。
如果这种方法可行,那么对log4net更有洞察力的人能给我一个提示吗?
我已经找到了上下文属性。他们是更好的选择吗?我如何写入事件上下文?
答案 0 :(得分:5)
我认为在记录器本身中包含ID没有任何好处。对我来说,这感觉是错误的。
关于日志记录上下文的This tutorial可能会对您有所帮助。假设单个消息的所有内容都出现在一个线程中,您可以为消息ID设置上下文属性,使用适当的日志记录格式,消息ID将只显示在日志中。