2017-07-07 7 views
1

Ich arbeite an einer WPF-Anwendung, die log4net verwendet. Es wird derzeit in einer einzelnen Datei protokolliert und wird nur dann erneut angezeigt, wenn es zu groß wird. Ich versuche, das zu ändern, damit es wächst, wenn die Datei zu groß wird, wenn sich das Datum ändert oder wenn die Anwendung neu gestartet wird.C# - Log4net Rollover auf Datum, Größe und Anwendung neu starten

Ich versuche Ausgang so nahe wie folgt wie möglich

App_2017-07-06.0.txt //First launch on 2017-07-06 
App_2017-07-06.1.txt //Rollover due to size limit 
App_2017-07-06.2.txt //Application relaunch 
App_2017-07-06.3.txt //Rollover due to size limit 
App_2017-07-07.0.txt //Rollover due to date change 
App_2017-07-07.1.txt //Rollover due to size limit 
App_2017-07-07.2.txt //Application relaunch - Currently Logging File 

Von dem, was ich aus der Dokumentation zu verstehen, kann der Roll Stil gesetzt werden, um „compostite“ Datum und Größe zu erfassen oder es kann auf "einmal" eingestellt sein, um Anwendungs-Relaunches zu erfassen. Es scheint keine Möglichkeit zu haben, alle 3: http://logging.apache.org/log4net/release/sdk/html/T_log4net_Appender_RollingFileAppender_RollingMode.htm

Ich habe es an den Punkt, wo alles richtig aussieht und funktioniert, außer der Application Relaunch überschreibt eine vorhandene Datei (ich stelle mir vor, wegen der Eigenschaft appendToFile). Ich kann es einfach nicht so funktionieren lassen, wie ich es brauche und ich kann keine Antworten in der Dokumentation finden.

Diese Frage scheint ein ähnliches Ziel erreichen zu versuchen, aber hat mein Problem nicht lösen: How do I force a rollover at application startup with Log4net RolloverFileAppender?

bin ich etwas fehlt? Ist das mit log4net einfach nicht möglich?

Meine aktuelle Konfiguration

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file type="log4net.Util.PatternString" value="Log\App.txt" /> 
     <appendToFile value="false" /> 
     <rollingStyle value="Composite" /> 
     <maximumFileSize value="10KB" /> 
     <maxSizeRollBackups value="-1" /> 
     <staticLogFileName value="false" /> 
     <preserveLogFileNameExtension value="true" /> 
     <countDirection value="1" /> 
     <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %level User = %username Class = %property{ClassName} Method = %property{MethodName}%newlineMessage - %message%newline%exception%newline***************************************" /> 
     </layout> 
    </appender> 

Meine aktuelle Ausgabe

App_2017-07-06.0.txt //First launch on 2017-07-06 
App_2017-07-06.1.txt //Rollover due to size limit 
App_2017-07-06.1.txt //Application relaunch - overwrites pre-existing file 
App_2017-07-06.2.txt //Rollover due to size limit 
App_2017-07-07.0.txt //Rollover due to date change 
App_2017-07-07.1.txt //Rollover due to size limit 
App_2017-07-07.1.txt //Application relaunch - overwrites pre-existing file - Currently logging file 

Antwort

0

Soweit ich log4net kopiert die Protokolldatei auf xxxx. {Nummer} .txt, wenn es rollt auf die nächste Datei kenne . Daher wurde Ihre erste App_2017-07-06.1.txt nie erstellt und wird immer noch App_2017-07-06.txt genannt, wenn die Anwendung neu gestartet wird. Sie haben konfiguriert, dass App_2017-07-06.txt überschrieben wird und Ihre erste App_2017-07-06.1.txt wurde nie erstellt.

Sie können <appendToFile value="true" /> so konfigurieren, dass die vorhandene Datei nicht überschrieben wird.