1

私はlog4netEventLogAppenderを使用してWindowsイベントログにログを記録しようとしているコンソールアプリケーションを持っています。私も2つのRollingFileAppenderを持っていますが、それらは正しく動作しています。Log4net EventLogAppenderはルートロガーでのみ動作します、なぜですか?

<logger Name="EventLogger"> 
    <level value="INFO" /> 
    <appender-ref ref="EventLogAppenderInfo"/> 
    <appender-ref ref="EventLogAppenderError"/> 
</logger> 

この方法EventLogger継承:

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

EventLogAppender sがこのように構成され、EventLoggerと呼ばれるロガーにあります

RollingFileAppender sがこのように構成され、ルートロガーでありますルートからアペンダー。 EventLoggerで何かをログすると、ログファイルにも書き込まれます。このようにした理由は、Windowsイベントログにすべての情報エントリをスパムしたくないからです。重要な情報だけです。しかし、私もすべてのエラーを記録したい。

これは私がロガー取得する方法である。このように構成

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

問題

を、任意のレベルで何かをログに記録するeventlogオブジェクトを使用して、log4netのは、Windowsへの書き込みはありませんイベントログですが、ログファイルに書き込むため、ルートのアペンダーが動作しています。

EventLogAppenderをルートに置くと機能していますが、イベントログに記録しないINFOレベルのエントリも記録しています。

私はこれが許可の問題ではないと考えています。ソースは既に作成されており、アクセス可能です。誰でも好奇心旺盛だ場合

ここ

は、2 EventLogAppender秒以下のとおりです。

<appender name="EventLogAppenderInfo" type="log4net.Appender.EventLogAppender"> 
    <applicationName value="ApplicationName" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date{yyyy.MM.dd HH:mm:ss} [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
    <filter type="log4net.Filter.LevelMatchFilter"> 
    <levelToMatch value="INFO"/> 
    </filter> 
    <filter type="log4net.Filter.DenyAllFilter" /> 
</appender> 

<appender name="EventLogAppenderError" type="log4net.Appender.EventLogAppender"> 
    <applicationName value="ApplicationName" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <IgnoresException value="False"/> 
    <conversionPattern value="%date{yyyy.MM.dd HH:mm:ss} [%thread] %-5level %logger [%property{NDC}] - %message%newline%exception" /> 
    </layout> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
    <levelMin value="WARN" /> 
    <levelMax value="FATAL" /> 
    </filter> 
</appender> 

私は何も考えることができないこれをやって、なぜlog4netの、誰もが解決策を持っている場合、それははるかに高く評価されるだろう!

乾杯!

答えて

1

大文字と小文字が区別される問題だと思います。

<logger Name="EventLogger"> 

<logger name="EventLogger"> 
する必要があります
関連する問題