Log4netを使用してINFOおよびWARNレベルのログエントリを介して使用状況を追跡する、単一のサーバーでWCFサービスを実行しています。次の非常に標準的な構成で RollingFileAppender を使用します。
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="\\mylocation\data\PRD\myApp\MyService"/>
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="-yyyy-MM-dd'.log'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="ADONetAppender_SqlServer" />
</root>
また、リダイレクトされた「WARN」レベルのデータを受け取り、ストアド プロシージャを介して SQL サーバーの DB テーブルに書き込む ADONetAppender も使用します。この設定は少し長いので、読みやすくするために省略しています。
このセットアップは、正常に実行されている開発環境と TST 環境で行われています。PRD 環境では、重複したログ ファイルが生成されるようです。1 つ目は、指定したパターン、つまり「logfile-yyyy-mm-dd.log」に従って名前が付けられています。2 番目のファイルは最初のファイルに追加されたように見え、日付パターンが重複しています。つまり、「logfile-yyyy-mm-dd.log.-yyyy-mm-dd.log」です。
これをさらに興味深いものにしているのは、2 つのファイルに含まれるエントリが時間的に重複していることです。ファイル 1 には午前 8 時から午前 12 時までのエントリが含まれ、ファイル 2 にも同じ時間帯のエントリが含まれます。エントリは重複ではなく、サービスの異なるユーザーによって生成されます。ファイル 1 と 2 のコピーはほとんど任意のサイズにすることができるため、これは、サイズまたは日付/時刻のしきい値に達して、次に必要なログ ファイルを生成するという問題ではありません。
DB テーブルのエントリには、予想されるすべての行が含まれており、一部は各ログ ファイルに含まれています。これらの行は WARN レベルのロギングによってのみ生成され、一部の WARNing は各ログ ファイルに表示されます。
私たちのショップのlog4netに精通した人々からこれを跳ね返しましたが、この重複ファイルの動作の原因をよく知っている人は誰もいません. Stackland からのアイデアを歓迎します。