我有两个不同的表,我也记录了信息。我正在使用针对log4net的Common.Logging库包装器,并且几乎已经正确配置了一些东西,但是我遇到了一个问题,即大部分内容都被记录到日志表中......我知道,反直觉。 ..我有两张桌子
日志表 审核表
以下是我的配置
<log4net>
<!-- This will force both loggers to write to both tables-->
<root>
<level value="INFO" />
<appender-ref ref="LogAppender" />
<!--<appender-ref name="Audit" ref="AuditAppender" />-->
</root>
<logger name="Log">
<level value="INFO" />
<appender-ref ref="LogAppender" />
</logger>
<logger name="Audit">
<level value="INFO" />
<appender-ref ref="AuditAppender" />
</logger>
<!--SQL LOG TABLE Appender-->
<appender name="LogAppender" type="log4net.Appender.AdoNetAppender"> .... This writes to Log Table correctly
</appender>
<appender name="AuditAppender" type="log4net.Appender.AdoNetAppender"> .... This logs to the Audit Table correctly
</appender>
</log4net>
致电代码:我们有三种创建记录器的方法
readonly ILog _default = LogManager.GetCurrentClassLogger();
readonly ILog _logger = LogManager.GetLogger("Log");
readonly ILog _auditer = LogManager.GetLogger("Audit");
现在,如果我把所有三个人召回,那么
_default.Info("Default Logger");
_logger.Info("Test get products logging");
_auditer.Info("Test get products audit");
我试图得到它,以便_default或_logger都写入日志表,实际上他们这样做 AND _auditer记录器写入审计表...
但问题出在这里......按照我的方式进行配置,审计表也写入了LOG表,这是我不想要的。现在,如果我摆脱log4net配置中的根节点,那么我只有命名的记录器一切正常,因为_logger日志写入日志表,_auditer写入审计表,但_default日志没有&#39;写给任何人......所以我在这里错过了什么?
答案 0 :(得分:3)
您应该设置additivity = false以防止审核记录器继承根记录器的配置。
<logger name="Audit" additivity="false">
...
</logger>