我正在尝试使用log4net进行群集上的分布式日志记录。
我的软件堆栈由隔离的代理组成,这些代理在群集周围具有唯一的实例ID。我想添加记录到正在生成的日志的每个对象的实例ID但是我希望所有继承的类对对象实例id使用相同的值,其中我遵循向每个类添加静态记录器的最佳实践我的,即使一个类继承自基类,它也有自己的记录器,如下面的
private static ILog _Log =LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
所以我不能使用记录器名称。此外,我不想将对象实例ID添加到我创建的每个日志中,我会使用logn4net日志自动完成。
我可以使用记录器上下文,但实例id不是全局的,不属于特定的线程。我应该怎么做呢?
答案 0 :(得分:0)
您可以向业务类添加嵌套诊断上下文,这些业务类提供有关正在进行的操作的上下文信息。您的日志消息将使用NDC信息进行丰富,例如,您可以将当前ID添加到NDC上下文,并且在您记录时,日志消息将得到丰富。
using(NDC.Push("my context message, and my id is:"+object.id))
{
... all log calls will have 'my context message, and my id is:...' included ...
}