Log4j2 propose des mécanismes pour gérer la rottaion des fichiers de journalisation. Les Policies déterminent quand effectuer une rotation (déclenchement), tandis que les Strategies contrôlent comment la rotation est réalisée (exécution). Lors de l'utilisation de RollingFile ou RollingRandomAccessFile, au moins une Policy doit être configurée.
Stratégies de déclenchement (Policies)
SizeBasedTriggeringPolicy : Déclenche la rotation lorsque le fichier de journalisation atteint une taille spécifiée. Les unités supportées incluent KB, MB et GB.
<SizeBasedTriggeringPolicy size="15 MB"/>
CronTriggeringPolicy : Utilise une expression Cron pour planifier les rotations de manière flexible.
<CronTriggeringPolicy schedule="0 0 */2 * * ?" />
TimeBasedTriggeringPolicy : Effectue des rotations à intervalles réguliers, basées sur le temps. Deux paramètres clés :
interval: Entier spécifiant la période entre rotations. La précision doit correspondre au format de date dansfilePattern. Par exemple, sifilePatterninclut secondes,interval=1signifie toutes les secondes.modulate: Booléen qui aligne les rotations sur des frontières temporelles (ex. : minuit) si activé.
Exemple de configuration combinant plusieurs Policies :
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<RollingFile name="LogsFile" fileName="./logs/application.log"
filePattern="./logs/application-%d{yyyy-MM-dd-HH-mm}-%i.log">
<PatternLayout pattern="%d{ISO8601} [%t] %-5level %logger - %msg%n" charset="UTF-8"/>
<Policies>
<TimeBasedTriggeringPolicy interval="5" modulate="true"/>
<SizeBasedTriggeringPolicy size="20 MB"/>
</Policies>
<DefaultRolloverStrategy max="15"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="warn">
<AppenderRef ref="LogsFile"/>
</Root>
</Loggers>
</Configuration>
Stratégies de roulement (Strategies)
DefaultRolloverStrategy : Stratégie par défaut qui gère la rotation et la suppression des anciens fichiers. Le paramètre max définit le nombre maximal de fichiers à conserver (par défaut 7).
<DefaultRolloverStrategy max="20"/>
DirectWriteRolloverStrategy : Écrit directement les journaux dans des fichiers définis par le pattern, sans étape intermédiaire. Utile pour des cas spécifiques, bien que DefaultRolloverStrategy soit généralement suffisante.