(F.Y.I. Ich habe bereits viele Dokumente im Internet durchsucht. Ich verwende storm-0.10.0-beta1. Die Konfigurationsdatei von log4j2 in Storm ist worker.xml.)
Jetzt versuche ich, log4j2 zu verwenden.
Ich suche nach Möglichkeiten zum Löschen alter Protokolle, kann dies jedoch nicht herausfinden. Ein Teil der Konfiguration ist wie folgt.
<RollingFile name="SERVICE_APPENDER"
fileName="${sys:storm.home}/logs/${sys:logfile.name}.service"
filePattern="${sys:storm.home}/logs/${sys:logfile.name}.service.%d{yyyyMMdd}">
<PatternLayout>
<pattern>${pattern}</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="9"/>
</RollingFile>
Zuerst habe ich erwartet, dass Protokolldateien, die älter als 3 Tage sind, entfernt werden.
Tatsächlich aber nicht.
Ich frage mich also, ob es eine Möglichkeit gibt, alte Protokolle zu entfernen oder nicht.
Wenn es einen Weg gibt, den ich noch nicht gefunden habe, benachrichtigen Sie mich bitte.
Seit 2.5 unterstützt Log4j eine benutzerdefinierte Löschaktion die bei jedem Rollover ausgeführt wird.
Sie können steuern, welche Dateien gelöscht werden, indem Sie Folgendes kombinieren:
Benutzer, die eine noch genauere Kontrolle über die zu löschenden Dateien benötigen, können eine Skriptbedingung mit jeder unterstützten JSR-223-Skriptsprache angeben.
Bitte lesen Sie die Dokumentation , sie enthält drei vollständige Beispiele, die nützlich sein können.
Für Ihre Frage sollte dieses Snippet funktionieren:
<DefaultRolloverStrategy>
<!--
* only files in the log folder, no sub folders
* only rolled over log files (name match)
* only files that are 4 days old or older
-->
<Delete basePath="${sys:storm.home}/logs/" maxDepth="1">
<IfFileName glob="*.service.????????" />
<IfLastModified age="4d" />
</Delete>
</DefaultRolloverStrategy>
Schließlich sei vorsichtig! Auf diese Weise gelöschte Dateien können nicht wiederhergestellt werden. :-)
Weitere Hintergrundinformationen finden Sie in diesem JIRA-Eintrag für log4j:
https://issues.Apache.org/jira/browse/LOG4J2-524
Es scheint der Fall zu sein, dass das automatische Löschen alter Protokolldateien nicht funktioniert, wenn Sie nur eine TimeBasedTriggeringPolicy
verwenden.