我试图找出一种方法将属性注入到log4net的LoggingEvent中。每经测井方法创建一个事件时,如:将属性注入到log4net的LoggingEvent中
log.Warn(...);
log.Info(...);
log.Error(...);
等
我希望能够将属性添加到所创建的LoggingEvent所,属性属性。
使用反射器我可以看到,当调用日志方法时,如果事件的级别等于或超过记录器上设置的阈值,它最终实例化LoggingEvent实例。此LoggingEvent具有PropertiesDictionary类型的Properties属性,基本上是名称/值对的映射。我希望能够添加属性到该字典,而无需用户进行任何额外的调用。
我能想到这样做的唯一方法是如果我以某种方式包装从LogManager.GetLogger()返回的记录器。我不介意这样做,但它不能通过代码,我需要通过log4net配置来实现。我一直在四处搜寻,看不到任何通过配置来包装东西的方式。
我认为它也可以将属性添加到线程上下文对象中,但是这又必须自动发生,而不需要用户通过代码来完成。有没有办法让我通过配置挂钩到线程上下文对象,这样每次为日志语句创建上下文时,我的一些代码就会被调用?
感谢, 尼克
不,这不会工作,因为用户必须编码。我正在寻找一种方法让我注入我自己的代码,以便每次创建LoggingEvent时都可以为其添加属性。 – nickdu