问题描述
|
我想向我的消息传递应用程序添加跟踪功能。我使用的每条消息都有一个唯一的标识符,该标识符可用于后续的消息(由原始消息生成的消息)。
为了能够跨多个进程和可能的服务器监视消息的生命周期行为,我想使用log4net远程附加程序。
我可以使用一个记录器,在消息本身中编码消息ID:
Logger: \"MessageLivetime\"
Message: \"SomeId | message text\")
但是我认为,如果我为每条消息创建一个记录器,那将很聪明:
Logger: \"MessageLivetime.someId\"
Message: \"message text\")
但是,由于LogManager
类没有删除记录器的方法,我担心会遇到问题,因为将创建数千个废弃的记录器。
可以更深入地了解log4net的人可以提示我这种方法是否可行吗?
我已经找到了上下文属性。他们是更好的选择吗?以及如何写事件上下文?
解决方法
在记录器本身中包含ID,我看不出任何好处。对我来说,这感觉错了。
本教程有关日志记录上下文可能会为您提供帮助。假设单个消息的所有操作都在单个线程中发生,则可以为消息ID设置上下文属性,使用适当的日志记录格式,并且消息ID只会出现在您的日志中。