log4net - 为跟踪目的创建许多记录器是一个好习惯吗?

时间:2011-04-13 06:19:23

标签: c# log4net messaging nservicebus

我想在我的消息传递应用程序中添加跟踪功能。我使用的每条消息都有一个唯一的标识符,该标识符被转发到后续消息(原始消息产生的消息)。

为了能够跨多个进程和可能的服务器监视消息的生命周期行为,我想使用log4net远程处理程序。

我可以使用一个记录器并在消息本身中编码消息ID:

  • Logger: "MessageLivetime" Message: "SomeId | message text")

但是我认为如果我为每条消息创建一个记录器会很聪明:

  • Logger: "MessageLivetime.SomeId" Message: "message text")

然而,由于LogManager类没有删除记录器的方法,我担心会遇到问题,因为会创建数千个废弃的记录器。

如果这种方法可行,那么对log4net更有洞察力的人能给我一个提示吗?

我已经找到了上下文属性。他们是更好的选择吗?我如何写入事件上下文?

1 个答案:

答案 0 :(得分:5)

我认为在记录器本身中包含ID没有任何好处。对我来说,这感觉是错误的。

关于日志记录上下文的

This tutorial可能会对您有所帮助。假设单个消息的所有内容都出现在一个线程中,您可以为消息ID设置上下文属性,使用适当的日志记录格式,消息ID将只显示在日志中。