2012-08-23 9 views
5

Chcę utworzyć pliki dziennika nazwy z następującym wzorem:log4net źle generowania dziennika nazwę pliku

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

Innymi słowy, utworzyć nowy plik dla każdego dnia. Więc utworzyć następującą konfigurację, aby to zrobić:

<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> 

Kiedy uruchamiam program, dzisiaj na przykład, plik SBRF_20120823.log zostanie utworzony. Jednak w następnych dniach dziennik utrzymuje napisać w pliku SBRF_20120823.log i pliki, które są tworzone są:

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

I jeśli uruchomić program jutro, pliki, które zostaną utworzone są:

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

Dlaczego?

Odpowiedz

7

Nie umieszczasz wzoru daty w pliku < > - to jest statyczna część nazwy pliku. Musisz umieścić go w <datePattern>.

Również, jeśli używasz log4net 1.2.11, możesz użyć <preserveLogFileNameExtension>, która umieszcza również datę na bieżącym pliku.

myślę, że to, co chcesz konfiguracja wyglądać:

<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. Kiedyś pisałem własny RollingFileAppender, ale teraz przełączam się na używanie najnowszego log4net z tymi nowymi ustawieniami. –

0

Usuń <rollingStyle value="Date" />.

+0

Dlaczego? A jeśli usunę ten tag, dziennik zatrzyma się, aby utworzyć nowy plik każdego dnia, prawda? –

-1

Nie myśl, że zmienisz to zachowanie za pomocą RollingFileAppender, więc musisz utworzyć własnego programistę.

Powiązane problemy