2

ログレベルが異なるいくつかのアペンダーにメッセージを書き込むようにロガーを構成する必要があります。

例のために。RefreshDataService詳細情報を に記録しTransportFileAppender、警告とエラーをに記録しますRollingFileAppender

また、ロギングのパフォーマンスを向上させるためにバッファリングを使用しています。FilteredFileLog警告を FileLog->RollingFileAppender に転送するようにアペンダーをセットアップしました。

ただし、RefreshDataService ロガーの場合、debug および Info を含むすべてのログ メッセージが FileLog に記録されます。

RefreshDataServiceWarn+ メッセージのみを 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>
4

1 に答える 1

1

アペンダーでレベル範囲フィルターを使用できます。

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

私の理解では、Thresholdプロパティは、特定のレベルのメッセージがログに記録されたときにバッファをフラッシュするようにアペンダーに指示するために使用されます。このようにして、たとえば、エラーがすぐにデータベースに書き込まれるようにすることができます。

于 2010-12-09T13:42:10.513 に答える