【问题标题】:log4net ForwardingAppender thresholdlog4net ForwardingAppender 阈值
【发布时间】:2011-05-22 20:40:45
【问题描述】:

我需要配置记录器以将消息写入具有不同日志级别的多个附加程序。

例如。我希望 RefreshDataService 将详细信息记录到 TransportFileAppender 并将警告和错误记录到 RollingFileAppender

另外,我正在使用缓冲来提高日志记录性能。 我设置FilteredFileLog appender 将警告转发到 FileLog->RollingFileAppender。

但对于 RefreshDataService 记录器,所有日志消息包括调试和信息都被记录到 FileLog。

您能帮我配置RefreshDataService 记录器以仅将Warn+ 消息记录到FileLog 吗?谢谢。

以下是我的 log4net 配置的摘录。

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="${TEMP}\logs\client\${ENV}\client.log" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="4096KB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level [%property{ENV}] [%property{UID}] %logger - %message%newline" />
  </layout>
</appender>

<appender name="TransportAppender" type="log4net.Appender.RollingFileAppender">
  <file value="${TEMP}\logs\client\${ENV}\client.comm.log" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="4096KB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>


<appender name="DetailedTransportLog" type="log4net.Appender.BufferingForwardingAppender">
  <threshold value="DEBUG" />
  <bufferSize value="200" />
  <appender-ref ref="TransportAppender" />
</appender>

<appender name="FileLog" type="log4net.Appender.BufferingForwardingAppender">
  <bufferSize value="20" />
  <lossy value="false" />
  <appender-ref ref="RollingFileAppender" />
</appender>

<appender name="FilteredFileLog" type="log4net.Appender.ForwardingAppender">
  <threshold value="WARN" />
  <appender-ref ref="FileLog" />
</appender>

<logger name="RefreshDataService" >
  <level value="DEBUG" />
  <appender-ref ref="FilteredFileLog" />
  <appender-ref ref="DetailedTransportLog" />
</logger>

【问题讨论】:

    标签: log4net log4net-configuration


    【解决方案1】:

    您可以在 appender 上使用级别范围过滤器:

    <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="WARN" />
        <levelMax value="FATAL" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />
    

    我的理解是Threshold 属性用于告诉附加程序在记录一定级别的消息时刷新缓冲区。通过这种方式,您可以确保将错误立即写入数据库。

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多