Un mémo lorsque j'ai vérifié quand le fichier inutile (= fichier d'archive qui était hors de sauvegarde) n'a pas disparu et est devenu "Pourquoi ~" tout en vérifiant la validité du paramètre de rotation de Logback.
NOTE:
Au moment de la vérification, j'ai créé une méthode principale qui ne produit qu'un seul journal de débogage et l'ai exécutée avec la date du système décalée.
Je n'ai pas étudié les conditions détaillées, mais dans le cas d'une application autonome avec un temps d'exécution court (= application que le processus se termine immédiatement après la sortie du journal), des fichiers inutiles qui doivent être effectués après la rotation du fichier journal (= hors de sauvegarde) Fichier archive) Il semble que la JVM avant le processus de suppression puisse être interrompue.
En activant l'option d'appeler le processus pour supprimer les fichiers inutiles (= fichiers d'archive qui ont été enregistrés) au démarrage de l'application, vous pouvez supprimer les fichiers inutiles au moment de l'exécution suivante.
Exemple de définition lors de l'exécution du processus de suppression des fichiers inutiles au démarrage
<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> <!--★★★ Ajouter ici ★★★-->
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
NOTE:
Dans le cas d'une application résidente telle qu'une application Web, les fichiers inutiles sont également supprimés au moment de la rotation, sauf cas particulier (= car il est très peu probable que le processus se termine au moment du basculement). Même si vous n'êtes pas chanceux et qu'il n'est pas supprimé, il sera supprimé à la prochaine opportunité de rotation, il semble donc qu'il n'y aura pas de problème même si vous ne disposez pas des paramètres ci-dessus.
Probablement ... Pour les applications qui fonctionnent sur des services commerciaux, il est presque normal de ne pas spécifier cleanHistoryOnStart
. Une application par lots qui se termine par une mise à mort instantanée! ?? Si vous avez (il y a une histoire que vous n'avez pas à traiter si elle se termine par un kill instantané ...), vous pouvez spécifier cette option au cas où.
Aussi ... Si vous n'incluez pas cette option lors de la vérification de l'opération de rotation comme je le fais, vous risquez de perdre du temps à demander "Pourquoi?".