1

エラー メッセージとデバッグ メッセージを 2 つの異なるファイルに記録しようとしています。これを行うために、2 つの異なるファイル アペンダを使用しています。

ここに私のapp.configファイルがあります:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="DebugFileAppender" type="log4net.Appender.FileAppender">
  <param name="File" value="DebugLog.log" />
  <param name="AppendToFile" value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%date %level %logger - %message %newline" />
  </layout>
  <filter type="log4net.Filter.LevelMatchFilter">
    <levelToMatch value="DEBUG"/>
  </filter>
  <filter type="log4net.Filter.DenyAllFilter" />
</appender>

<appender name="ErrorFileAppender" type="log4net.Appender.FileAppender">
  <param name="File" value="ErrorLog.log" />
  <param name="AppendToFile" value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%date %level %logger %type %exception %line %location - %message                  %newline" />
  </layout>
  <filter type="log4net.Filter.LevelMatchFilter">
    <levelToMatch value="ERROR"/>
  </filter>
  <filter type="log4net.Filter.DenyAllFilter" />
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="DebugFileAppender" />
</root>

<logger name="ErrorFileAppender" >
  <level value="ERROR"/>
  <appender-ref ref="ErrorFileAppender"/>
</logger>

デバッグ メッセージは正常に機能しますが、例外エラーを含むようにプログラムを変更すると、エラーがファイルに書き込まれません。

例外をキャッチするために使用するコードは次のとおりです。

catch (Exception e)
{
    logger.Error(e);
}
4

1 に答える 1

1

以下を含むようにルートを変更します。

<root>
  <appender-ref ref="ErrorFileAppender"/>
  <appender-ref ref="DebugFileAppender" /> 
</root>

わかりやすくするためにコメントから移動しました

于 2015-04-10T05:08:35.190 に答える