Ich habe einen WCF-Dienst, der auf einem einzigen Server läuft, und verwende Log4net, um die Nutzung über Protokolleinträge der Ebenen INFO und WARN zu verfolgen. Ich verwende einen RollingFileAppender mit der folgenden sehr standardmäßigen Konfiguration:
<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>
Ich verwende auch einen ADONetAppender, der umgeleitete Daten der Stufe "WARN" empfängt und sie über eine gespeicherte Prozedur in eine DB-Tabelle im SQL-Server schreibt. Die Konfiguration hierfür ist etwas lang, daher habe ich sie aus Gründen der Lesbarkeit weggelassen.
Ich habe dieses Setup in unseren Entwicklungs- und TST-Umgebungen, wo es einwandfrei funktioniert hat. In der PRD-Umgebung scheint es doppelte Protokolldateien zu erzeugen. Die erste ist nach dem von mir angegebenen Muster benannt, d.h. "logfile-yyyy-mm-dd.log". Die zweite Datei sieht wie ein Zusatz zur ersten aus, wobei das Datumsmuster dupliziert wurde, d.h. "logfile-yyyy-mm-dd.log.-yyyy-mm-dd.log".
Interessant ist auch, dass sich die Einträge in den beiden Dateien zeitlich überschneiden. Datei 1 könnte Einträge von 8 bis 12 Uhr enthalten, und Datei 2 enthält ebenfalls Einträge aus demselben Zeitraum. Bei den Einträgen handelt es sich nicht um Duplikate, sondern sie wurden von verschiedenen Nutzern des Dienstes erstellt. Die Kopien der Dateien 1 und 2 können so gut wie beliebig groß sein, so dass es nicht darum geht, eine Größen- oder Datums-/Zeitschwelle zu erreichen und die nächste erforderliche Protokolldatei zu erzeugen.
Die DB-Tabelleneinträge enthalten alle erwarteten Zeilen, von denen einige in jeder der Protokolldateien enthalten sind. Diese Zeilen werden nur von der WARN-Protokollierung erzeugt, und einige WARNings erscheinen in jeder Protokolldatei.
Ich habe dies an einige log4net-erfahrene Leute in unserem Geschäft weitergegeben, aber niemand hat eine gute Idee, was dieses Verhalten der doppelten Dateien verursachen könnte. Jede Idee von Stackland ist willkommen.