2

我有两个不同的表,我也在记录信息。我正在使用用于 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都写入日志表,实际上他们这样做并且_auditer记录器写入审计表......

但问题是……按照我的配置方式,审计表也写入 LOG 表,这是我不想要的。现在,如果我摆脱了 log4net 配置中的根节点,那么我只有命名的记录器一切正常,因为 _logger 日志写入日志表,_auditer 写入审计表,但 _default 日志不写入到任何东西......所以我在这里想念什么???

4

1 回答 1

3

您应该设置 additivity = false 以防止您的审计记录器继承根记录器的配置。

<logger name="Audit" additivity="false">
   ...
</logger>
于 2014-11-11T19:17:28.843 回答