2016-12-08 14 views
5

私log4netの構成は次のようになりますエントリを複製:クラスでlog4netのは一つだけ(ルート)ロガーを使用する場合

<log4net> 
<appender name="CloudWatchLogsAppender" type="CloudWatchAppender.CloudWatchLogsAppender, CloudWatchAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %level %logger.%method - %message%newline" /> 
    </layout> 
    <groupName value="agroupname" /> 
    <streamName value="astreamname" /> 
</appender> 
<root> 
    <level value="INFO" /> 
    <appender-ref ref="CloudWatchLogsAppender" /> 
</root> 
<logger name="Amazon"> 
    <level value="OFF" /> 
</logger> 
</log4net> 

、私は

private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

でロガーをインスタンス化し、Log.Errorを呼び出します(メッセージ);一度だけですが、ログにはすべてのエラーが重複しています。また、このメソッドは、WebApiプロジェクトのコントローラクラスで呼び出されています。

私は、複数のロガーを使用してルートロガーまでメッセージを伝播するときに発生する可能性があることを他の質問で読んだことがありますが、このインスタンスではルートロガーのみを使用しています。

+0

また、Amazonのロガーをそこで削除しようとしましたが、違いはありませんでした。 –

+0

重複するログエントリは、ミリ秒まで正確に同じですか?または、アプリケーションコードが誤って2回ロギングされる可能性がありますか? –

+0

これらはまったく同じ、ミリ秒やスレッドなどと同じ時間です。 –

答えて

5

それは問題がAWS SDK固有の設定だったようだ。どういうわけか

 <add key="AWSLogging" value="log4net" /> 

、これはアペンダを複製し、二重のメッセージを引き起こしました。

修正するには、この設定を削除するか、値を「なし」に変更します。

関連する問題