2017-07-21 12 views
1

2つのログファイルを作成しようとしています。私のアプリケーションでは、コード内にロガー名を指定してログを記録しています。Log4net - 間違ったアペンダーへのログ

問題は、ターゲットにしようとしているファイルには決してログを記録せず、代わりにconfig(LogB)に最後に宣言されたアペンダにログを記録することです。

次のように私は私の設定は、設定した

<log4net> 
    <logger name="LogA"> 
     <appender-ref ref="LogA"/> 
     <level value="DEBUG"/> 
    </logger> 
    <logger name="LogB"> 
     <appender-ref ref="LogB"/> 
     <level value="DEBUG"/> 
    </logger> 
    <appender name="LogA" type="log4net.Appender.FileAppender"> 
     <file value="E:\Logs\LogA.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="5" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
    <appender name="LogB" type="log4net.Appender.FileAppender"> 
     <file value="E:\Logs\LogB.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="5" /> 
     <maximumFileSize value="10MB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="LogA" /> 
    </root> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="LogB" /> 
    </root> 
    </log4net> 

その後、私のコードでは、私はロガーを作成する場合:

private static readonly ILog logA = LogManager.GetLogger("LogA"); 
log.Debug("This should log to LogA"); 

そして、いくつかの他のクラスで:

private static readonly ILog logB = LogManager.GetLogger("LogB"); 
log.Debug("This should log to LogB"); 

をしかし、LogAファイルには何も記録されず、常にLogBファイルに出力されます(または、confiの最後に表示されるものg)。

これはなんですか?

答えて

1

何らかの理由で、複数のルートノードが気に入らないようです。代わりに(アペンダーノードを維持して)この設定を使用したとき、それは機能しました:

<root> 
     <level value="ALL" /> 
     <appender-ref ref="SomeRootAppender" /> 
    </root> 
    <logger additivity="false" name="LogA"> 
     <level value="DEBUG"/> 
     <appender-ref ref="LogA" /> 
    </logger> 
    <logger additivity="false" name="LogB"> 
     <level value="DEBUG"/> 
     <appender-ref ref="LogB" /> 
    </logger> 
関連する問題