Zeit-basierte Triggerung Politik in log4j2
Ich versuche, neue Protokolldateien erstellen, die auf einer stündlichen basis. Ich bin mit TimeBasedTriggerringPolicy von lo4j2 in RollingFileAppender. Unten ist der Beispiel-xml-Konfigurations-code habe ich genommen von log4j2 offiziellen Website.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
**
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
**
<SizeBasedTriggeringPolicy size="250 MB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile" />
</Root>
</Loggers>
</Configuration>
In der interval-Attribut habe ich set 1, was bedeutet 1 Stunde.
Aber immer noch meine Datei nicht Rolle alle 1 Stunde.
Bitte helft mir, finde keinen Fehler.
Hinweis : ich habe beta9 von log4j2 (das ist die neueste)
Du musst angemeldet sein, um einen Kommentar abzugeben.
1 hier zeigt 1 Tag und 1 Stunde. Ich habe manuell getestet mit unter Konfiguration.
Für die manuelle Prüfung, ändere ich das system Datum und Uhrzeit.
Versuchen Sie zunächst, mit Zunehmender 1 Stunde. Die log-Dateien werden generiert, aber nicht nach den Erwartungen.
Dann ändern Sie das system-Datum, Erhöhung um 1 Tag und dann die Ergebnisse zu sehen.
Nehme an, die Letzte log-Datei (abc.anmelden) auf Tag 29-Okt 50 KB. Konfiguration Größe von 100 KB. Wenn wir den Tag ändern (erhöhen um 1 Tag) und dann auf ausführen.
Dann, letzten Datei wird umbenannt, 29-Oct-(einige Sequenz-Nummer).Protokoll (50 KB-Datei, wie Sie ist kopiert) und die neue Datei wird erstellt mit abc.melden Sie
Habe ich versucht dieses mit einfachen servlet-mit unten-Konfiguration in web.xml
halten log4j2.xml im src-Ordner. log4j2.xml wird nicht geladen, wenn halten wir es in classpath.
Als Abid erwähnt, Intervall-Wert interpretiert und im Kontext der Muster angegeben ist als Teil filePattern. Es beginnt mit der niedrigsten Stückelung. Zum Beispiel,wenn ein Muster enthält S, Frequenz in Millisekunden. Es unterstützt das Datum Muster, wie beschrieben im detail als Teil des " = SimpleDateFormat java-doc http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
Log4j Dokumentationen:
Sollten Sie ändern Sie den Dateinamen-Muster, wenn Sie möchten, um es zu schaffen, jede Stunde.
Haben Sie eine nicht-leere log-Datei (ansonsten gibt es nichts zu überschlagen)?
Beachten Sie, dass, obwohl der name "Zeitbasierte..." wird Es eigentlich nicht über Rollen, in der angegebenen Zeit, aber bei dem ersten log-Ereignis, das kommt nach der Zeit, die Schwelle wurde überschritten. Können Sie versuchen mit einem kleinen test-Programm, dass die Protokolle etwas nach 61 Minuten oder so und sehen, ob das problem immer noch Auftritt?
Wenn es nicht die über Rollen mit den oben genannten test-Programm, müssen Sie möglicherweise einen Fehler gefunden. In diesem Fall bitte heben Sie es auf die log4j-issue-tracker. (Schließen Sie das test-Programm kann das team nutzen, um das Problem zu reproduzieren).
Entsprechend Ihrer TimeBasedTriggeringPolicy-Konfiguration, logger-nur füllen die Protokolle jeden Tag, nicht jede Stunde.
AFAIK,können Sie erreichen die Funktionalität, indem Sie ändern die filePattern aus HH(Stunden) dd(Tag).
Habe ich geändert config.xml. Versuchen Sie, Diese
Für mehr details überprüfen Sie diese
Hoffe, das wird Training auch für Sie.