7

ロギングに log4net を使用しています。1 つのファイルともう 1 つのイベントログ アペンダーの 2 つのアペンダーがあります。レジストリ エディターでアプリケーションを登録しましたが、両方のロガーがイベント ビューアーに書き込みを行っているという問題があります。fileAppenderファイルに書き込み、eventLogAppenderイベント ビューアーに表示する必要があります。

<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <file value="file.log"/>
  <appendToFile value="false"/>
  <layout type="log4net.Layout.PatternLayout">
    <header value="Logging Start &#xD;&#xA;"/>
    <footer value="Logging End &#xD;&#xA;"/>
    <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
  </layout>
</appender>

<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">

  <param name="ApplicationName" value="eventlog" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>

<root>
  <level value="DEBUG"/>
  <appender-ref ref="LogFileAppender"/>
  <appender-ref ref="EventLogAppender" />
</root>
</log4net>

そしてコードで

private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// private static readonly ILog log = LogManager.GetLogger("LogFileAppender");
private static readonly ILog logEvents = LogManager.GetLogger("EventLogAppender");

私はさまざまなことを試しましたが、誰も機能していません。解決策はありますか?

ありがとう!

4

1 に答える 1

14

複数の ILog インスタンスを log4net で使用し、それぞれに異なる情報を記録するには、構成ファイルの log4net セクションで少なくとも 2 つの Logger 要素を構成する必要があります。

あなたの場合、ファイルとイベント ログの 2 つのターゲットが必要です。それらを FileLogger と EventLogger と呼びます。

log4net セクションで必要な追加構成の例を次に示します。

<logger name="FileLogger">
  <level value="ALL" />
  <appender-ref ref="LogFileAppender" />
</logger>

<logger name="EventLogger">
  <level value="ALL" />
  <appender-ref ref="EventLogAppender" />
</logger>

次に、コードでそれぞれを使用するには、次のようにインスタンス化します。

private static readonly ILog fileLogger = LogManager.GetLogger("FileLogger");
private static readonly ILog eventLogger = LogManager.GetLogger("EventLogger");

アペンダー要素の ref 属性は、構成済みのアペンダーの name 属性と一致し、GetLogger に渡される名前はロガー要素の name 属性と一致することに注意してください。

于 2012-08-13T08:32:31.097 に答える