5

我正在使用以下 log4net 配置。我正在尝试将性能日志写入单独的文件,但输出将同时写入这两个文件。即使我指定:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger("PerformanceMetricsLogger");

在这种情况下,如何阻止 log4net 写入默认附加程序?

<log4net>
  <!-- Define some output appenders -->
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">    
    <file type="log4net.Util.PatternString" value="c:\ilap\IlapAdServerLog_%property{log4net:HostName}.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="2000KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>

  <appender name="RollingFileAppenderForPerformance" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="c:\ilap\IlapAdServerLog_%property{log4net:HostName}.peformance.log" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="2000KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>

  <!-- Setup the root category, add the appenders and set the default level -->
  <root>
    <level value="DEBUG" />
    <appender-ref ref="RollingFileAppender" />
  </root>

  <logger name="PerformanceMetricsLogger">
    <level value="DEBUG" />
    <appender-ref ref="RollingFileAppenderForPerformance" />
  </logger>
</log4net>
4

1 回答 1

7

root 以下的所有 logger 级别都继承了 root logger 的 appender。这就是您的消息被记录两次的原因。要禁用记录器的继承,请将其additivity参数设置为 false:

 <logger additivity="false" name="PerformanceMetricsLogger">
    <level value="DEBUG" />
    <appender-ref ref="RollingFileAppenderForPerformance" />
  </logger>
于 2010-08-26T20:27:27.050 回答