2012-08-23 7 views
5

I Log-Dateien Namen mit dem folgenden Muster erstellen möchten:Log4net Erzeugung falsch Logdateinamens

SBRF_20120820.log 
SBRF_20120821.log 
SBRF_20120822.log 
SBRF_20120823.log 

Mit anderen Worten, für jeden Tag eine neue Datei erstellen. So schaffe ich die folgende Konfiguration, das zu tun:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender, log4net"> 
     <file type="log4net.Util.PatternString" value="Logs/SBRF_%date{yyyyMMdd}.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %-5level - %message%newline" /> 
     </layout> 
    </appender> 
    <logger name="LogEmArquivo"> 
     <level value="INFO" /> 
     <appender-ref ref="FileAppender" /> 
    </logger> 
</log4net> 

Wenn ich das Programm laufen, heute zum Beispiel die Datei SBRF_20120823.log erstellt. Aber in den folgenden Tagen das Protokoll hält in der SBRF_20120823.log Datei zu schreiben, und die Dateien, die erstellt werden, sind:

SBRF_20120823.log.2012-08-23 
SBRF_20120823.log.2012-08-24 
SBRF_20120823.log.2012-08-25 
SBRF_20120823.log.2012-08-26 

Und wenn ich das Programm morgen laufen, werden die Dateien, die erstellt werden:

SBRF_20120824.log.2012-08-24 
SBRF_20120824.log.2012-08-25 
SBRF_20120824.log.2012-08-26 
SBRF_20120824.log.2012-08-27 

Warum?

Antwort

7

Sie legen das Datumsmuster nicht in die <Datei> - das ist der statische Teil des Dateinamens. Sie müssen es in die <datePattern> setzen.

Wenn Sie log4net 1.2.11 verwenden, können Sie auch <preserveLogFileNameExtension> verwenden, die das datePattern auch auf die aktuelle Datei setzt.

Ich denke, das ist das, was Sie Ihre Konfiguration aussehen soll:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender, log4net"> 
     <file type="log4net.Util.PatternString" value="Logs/SBRF_.log"/> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value="yyyyMMdd" /> 
     <preserveLogFileNameExtension value="true"/> 
     <staticLogFileName value="false" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %-5level - %message%newline" /> 
     </layout> 
    </appender> 
    <logger name="LogEmArquivo"> 
     <level value="INFO" /> 
     <appender-ref ref="FileAppender" /> 
    </logger> 

+0

+1. Ich habe meinen eigenen RollingFileAppender geschrieben, aber jetzt wechseln, um das neueste log4net mit diesen neuen Einstellungen zu verwenden. –

0

Entfernen Sie die <rollingStyle value="Date" />.

+0

Warum? Und wenn ich dieses Tag entferne, wird das Protokoll aufhören, eine neue Datei für jeden Tag zu erstellen, richtig? –

-1

Denken Sie nicht, dass Sie dieses Verhalten mit dem RollingFileAppender ändern, also müssten Sie Ihren eigenen Appender erstellen.