J'ai trouvé un exemple de fichier de propriétés dans la documentation d'Apache Tomcat 7, mais comme cela était destiné à être utilisé avec Log4j 1.x, j'ai dû l'adapter à la syntaxe du fichier de propriétés Log4j2. Voici le résultat :
# 'status' fait référence aux messages de journalisation provenant de Log4j2 lui-même
monitorInterval = 30
status = warn
property.loglevel.catalina = info
property.loglevel.localhost = info
property.layoutPattern.catalina = %d %-5p [%t] %-22.22c{1} %m%n
property.layoutPattern.localhost = %d %-5p [%t] %-30.30c{1} %m%n
# Faites basculer les journaux une fois par mois en utilisant la politique CronTrigger.
property.fileDatePattern.catalina = %d{yyyy-MM}
property.fileDatePattern.localhost = %d{yyyy-MM}
property.cronTriggerSchedule.catalina = 0 0 0 1 * ?
property.cronTriggerSchedule.localhost = 0 0 0 1 * ?
## Appenders
# Remarque : - Pas besoin de spécifier 'appender = CATALINA, LOCALHOST, CONSOLE'
# car ces identifiants ne contiennent pas de caractères '.'.
# - Les identifiants de sous-composant 'policies' et 'cron' sont arbitrairement
# choisis ; le type réel est spécifié via l'attribut 'type'.
# - 'DirectWriteRolloverStrategy' est utilisé automatiquement car aucun 'fileName' n'est spécifié.
appender.CATALINA.type = RollingFile
appender.CATALINA.name = RollingFile-CATALINA
appender.CATALINA.filePattern = ${sys:catalina.base}/logs/catalina.${fileDatePattern.catalina}.log
appender.CATALINA.layout.type = PatternLayout
appender.CATALINA.layout.pattern = ${layoutPattern.catalina}
appender.CATALINA.policies.type = Policies
appender.CATALINA.policies.cron.type = CronTriggeringPolicy
appender.CATALINA.policies.cron.schedule = ${cronTriggerSchedule.catalina}
appender.CATALINA.policies.cron.evaluateOnStartup = true
appender.CATALINA.filePermissions = rw-r-----
appender.CATALINA.fileOwner = tomcat
appender.CATALINA.fileGroup = adm
appender.LOCALHOST.type = RollingFile
appender.LOCALHOST.name = RollingFile-LOCALHOST
appender.LOCALHOST.filePattern = ${sys:catalina.base}/logs/localhost.${fileDatePattern.localhost}.log
appender.LOCALHOST.layout.type = PatternLayout
appender.LOCALHOST.layout.pattern = ${layoutPattern.localhost}
appender.LOCALHOST.policies.type = Policies
appender.LOCALHOST.policies.cron.type = CronTriggeringPolicy
appender.LOCALHOST.policies.cron.schedule = ${cronTriggerSchedule.localhost}
appender.LOCALHOST.policies.cron.evaluateOnStartup = true
appender.LOCALHOST.filePermissions = rw-r-----
appender.LOCALHOST.fileOwner = tomcat
appender.LOCALHOST.fileGroup = adm
# Décommentez si vous souhaitez conserver la journalisation vers catalina.out après la prise en charge de Log4j2.
#appender.CONSOLE.type = Console
#appender.CONSOLE.name = STDOUT
#appender.CONSOLE.layout.type = PatternLayout
## Configurez quels enregistreurs journalisent vers quels appenders
rootLogger.level = ${loglevel.catalina}
rootLogger.appenderRef.CATALINA.ref = RollingFile-CATALINA
#rootLogger.appenderRef.stdout.ref = STDOUT
# Ici, l'identifiant contient des caractères '.', nous devons donc spécifier la liste.
loggers = org.apache.catalina.core.ContainerBase.[Catalina].[localhost]
logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].name = LOCALHOST
logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = ${loglevel.localhost}
logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].appenderRef.LOCALHOST.ref = RollingFile-LOCALHOST
La principale raison pour moi d'utiliser Log4j2 était de pouvoir effectuer une rotation mensuelle des journaux, mais vous pouvez facilement tout ajuster selon vos préférences, même sans redémarrer Tomcat.