2012-11-21 13 views
12

Ich habe folgende log4j2.xml Datei:log4j2 - Begrenzung der Anzahl der Protokolldateien

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

Wie kann ich diese Konfiguration ändern, so dass

  1. Statt die gleiche Logfile über überschreiben und über wieder wird eine neue Datei erstellt, nachdem das Limit von 5mb erreicht wurde. Es wäre schön, etwas wie test1.log, test2.log und so weiter zu haben.
  2. Wie kann ich die Anzahl der in 1. erstellten Teilprotokolldateien begrenzen? Was ich erreichen will ist ein Schema, wie die folgenden:

    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 
    

Wer weiß, wie so etwas zu erreichen? Natürlich wäre es schön, wenn sowas mit log4j2 alleine möglich wäre. Aber vielleicht gibt es eine Möglichkeit, log4j2 mit einer Art von externem Programm zu kombinieren, das neben der Java-Hauptanwendung läuft und überflüssige Protokolldateien löscht, während die beiden letzten Protokolldateien intakt bleiben. Also wenn jemand wenigstens einen Vorschlag für 1. hat, mag es schon sein, wonach ich suche. Weil ich vielleicht ein Programm für den 2. Teil schreiben kann. Natürlich wäre es super, wenn der zweite Teil auch mit log4j2 erledigt werden könnte.

Antwort

20

Ich habe log4j2 noch nie benutzt, aber die Dokumentation des RollingFileAppender gibt Ihnen viele Konfigurationsbeispiele.

<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

Sorry für die späte Reaktion:

Interessant für Sie Nähte etwas wie dieses (mit DefaultRolloverStrategy) zu sein. Ich wollte dir nur für die Antwort danken. Es dient mir als Beispiel für eine mögliche zukünftige Verwendung von log4j2. –

+0

vielen dank, es funktioniert – Braj

Verwandte Themen