Ein Memo, als ich überprüfte, wann die unnötige Datei (= Archivdatei, die nicht mehr gespeichert war) nicht verschwand und zu "Warum ~" wurde, während die Gültigkeit der Rotationseinstellung von Logback überprüft wurde.
NOTE:
Zum Zeitpunkt der Überprüfung habe ich eine Hauptmethode erstellt, die nur ein Debug-Protokoll ausgibt und es mit verschobenem Systemdatum ausführt.
Ich habe die detaillierten Bedingungen nicht untersucht, aber im Fall einer eigenständigen Anwendung mit einer kurzen Ausführungszeit (= Anwendung, bei der der Prozess unmittelbar nach der Protokollausgabe endet) unnötige Dateien, die nach dem Drehen der Protokolldatei erstellt werden sollten (= nicht mehr gespeichert). Archivdatei) Es scheint, dass die JVM vor dem Löschvorgang beendet werden kann.
Durch Aktivieren der Option zum Aufrufen des Prozesses zum Löschen nicht benötigter Dateien (= Archivdateien, die gespeichert wurden) beim Start der Anwendung können unnötige Dateien beim nächsten Ausführungszeitpunkt gelöscht werden.
Beispiel für die Ausführung des Vorgangs zum Löschen nicht benötigter Dateien beim Start
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/app-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
<cleanHistoryOnStart>true</cleanHistoryOnStart> <!--★★★ Hier hinzufügen ★★★-->
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
NOTE:
Bei einer residenten Anwendung wie einer Webanwendung werden unnötige Dateien auch zum Rotationszeitpunkt gelöscht, es sei denn, es liegt ein Sonderfall vor (= da es sehr unwahrscheinlich ist, dass der Prozess zum Zeitpunkt des Wechsels endet). Selbst wenn Sie Pech haben und es nicht gelöscht wird, wird es bei der nächsten Rotationsmöglichkeit gelöscht. Es scheint also kein Problem zu geben, auch wenn Sie nicht über die oben genannten Einstellungen verfügen.
Wahrscheinlich ... Für Apps, die auf kommerziellen Diensten ausgeführt werden, ist es fast in Ordnung, "cleanHistoryOnStart" nicht anzugeben. Eine Batch-App, die mit einem sofortigen Kill endet! ?? Wenn es eine Geschichte gibt (ich glaube nicht, dass es notwendig ist, sie zu stapeln, wenn sie mit einem sofortigen Kill endet ...), ist es möglicherweise eine gute Idee, diese Option für alle Fälle anzugeben. Außerdem ... Wenn Sie diese Option bei der Überprüfung des Rotationsvorgangs nicht wie ich einschließen, verschwenden Sie möglicherweise Zeit mit der Frage "Warum?".
Recommended Posts