log4net を使用してさまざまなロガーに書き込む

ルート ロガーがファイル アペンダーとイベント ログ アペンダーの両方にログを記録するように Log4Net を構成しました。

イベント ビューアにログ メッセージが表示されない場合は、アプリケーションにイベント ソースを作成する権限がない可能性があります。

更新

構成例は次のとおりです:

<log4net>
  <root>
    <level value="INFO" />
    <appender-ref ref="LogFileAppender" />
  </root>
  <logger name="EventLogAppender" additivity="False">
    <level value="INFO" />
    <appender-ref ref="EventLogAppender" />
  </logger>
  <appender>
  ... 

このサンプルでは:

    <リ>

    ルート ロガー (したがって、特に明示的に構成されていない限り、すべての子ロガー) は LogFileAppender にログを記録します。 .あなたの DataIntakeService logger は明示的に構成されていないため、この構成を継承します。

    <リ>

    EventLogAppender ロガーは EventLogAppender にログを記録するように明示的に構成されています 、親ロガーから設定を継承しないように構成されています (additivity="false" )。したがって、LogFileAppender には記録されません。 . additivity="true" を設定した場合 設定を継承し、両方の LogFileAppender にログを記録します および EventLogAppender .

ちなみにロガーの名前は EventLogAppender おそらく少し紛らわしいです:EventLogLogger より良い名前かもしれません。


以下の構成により、log4net を使用してさまざまなロガーに書き込むことができます。

<log4net>
<logger name="LogFileLogger">
  <level value="INFO" />
  <appender-ref ref="LogFileAppender" />
</logger>
<logger name="EventLogger">
  <level value="INFO" />
  <appender-ref ref="EventLogAppender" />
</logger>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
  ...
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
  ...
</appender>

そして、ロガーを次のように呼び出すことができます:

private static readonly log4net.ILog LogFileLogger= log4net.LogManager.GetLogger("LogFileLogger");
private static readonly log4net.ILog EventLogger= log4net.LogManager.GetLogger("EventLogger");