2012-11-21 16 views
12

Mam następujący plik log4j2.xml:log4j2 - ograniczenie liczby plików dziennika

<?xml version="1.0" encoding="UTF-8"?> 
<configuration status="OFF"> 
    <appenders> 
    <RollingFile name="testLog" fileName="test.log" filePattern="" append="false"> 
     <PatternLayout pattern="[%t] %-5level - %msg%n%n"/> 
    <SizeBasedTriggeringPolicy size="5mb" /> 
    </RollingFile> 
    </appenders> 
    <loggers> 
    <logger name="TestsLogger" level="trace" additivity="false"> 
     <appender-ref ref="testLog"/> 
    </logger> 
    <root level="debug"> 
     <appender-ref ref="testLog"/> 
    </root> 
    </loggers> 
</configuration> 

Jak mogę zmodyfikować tę konfigurację tak, że

  1. Zamiast nadpisywania tego samego pliku dziennika w kółko ponownie tworzony jest nowy plik po osiągnięciu limitu 5 MB. Byłoby miło mieć coś takiego jak test1.log, test2.log i tak dalej.
  2. Jak mogę ograniczyć liczbę częściowych plików dziennika utworzonych w 1.? Co chcę osiągnąć jest schemat jak poniżej:

    creating test1.log [present log files: test1.log] 
    test1.log - 5mb limit reached 
    creating test2.log [present log files: test1.log, test2.log] 
    test2.log - 5mb limit reached 
    creating test3.log [present log files: test2.log, test3.log] 
    test3.log - 5mb limit reached 
    creating test4.log [present log files: test3.log, test4.log] 
    and so on 
    

Czy ktoś wie, jak osiągnąć coś takiego? Oczywiście byłoby miło, gdyby coś podobnego było możliwe tylko dzięki log4j2. Ale może istnieje sposób na połączenie log4j2 z jakimś zewnętrznym programem, który działałby równolegle z główną aplikacją Java i usuwał zbędne pliki dziennika, zachowując jednocześnie dwa ostatnie pliki dziennika. Więc jeśli ktoś ma przynajmniej sugestię na 1., może już być, czego szukam. Ponieważ mogę napisać program dla drugiej części. Oczywiście byłoby wspaniale, gdyby druga część mogła być wykonana również z log4j2.

Odpowiedz

20

Do tej pory nie używałem log4j2, ale dokumentacja RollingFileAppender podaje wiele przykładów konfiguracji.

dla Ciebie interesujący szwach być coś takiego (używając DefaultRolloverStrategy):

<RollingFile name="RollingFile" fileName="logs/app.log" 
      filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> 
    <PatternLayout> 
    <pattern>%d %p %C{1.} [%t] %m%n</pattern> 
    </PatternLayout> 
    <Policies> 
    <SizeBasedTriggeringPolicy size="5 MB"/> 
    </Policies> 
    <DefaultRolloverStrategy max="20"/> 
</RollingFile> 
+0

Przepraszamy za opóźnienie reakcji. Chciałem tylko podziękować za odpowiedź. Będzie to służyć za przykład dla dalszego przyszłego wykorzystania log4j2. –

+0

dziękuję, działa – Braj

Powiązane problemy