Je déploie un service web en tant qu'application web (guerre) sur Tomcat 8.0.24. Les pots d'application ont déjà été testés et ils fonctionnent bien. Maintenant, pour configurer et tester les objectifs de log4j, j'ai provoqué une erreur d'exécution (pas de db connecté).Comment configurer log4j2 pour une application Web dans Tomcat 8?
J'essaye de placer le log4j2 pour la notation d'application seulement (pas pour tomcat) et j'utilise Netbeans 8.0.2 pour construire la guerre.
J'ai inclus des bocaux suivants dans classpath:
log4j-api-2.8.jar
log4j-core-2.8.jar
log4j-web-2.8.jar
log4j-jcl-2.8.jar
commons-logging.jar
Et log4j2.xml dans WEB-INF, avec seulement enregistreur racine configuré pour attraper tout ce qui vient de l'application web:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration strict="true" status="TRACE">
<Properties>
<Property name="filename">C:\logs\Myapp.log</Property>
</Properties>
<Appenders>
<Appender type="Console" name="Console" target="SYSTEM_OUT">
<Layout type="PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} - %-5level %logger - %msg%n</Pattern>
</Layout>
</Appender>
<Appender type="File" name="FileAppender" fileName="${filename}" append="true" immediateFlush="true">
<Layout type="PatternLayout">
<Pattern>%d %p %logger -%C- %m%n</Pattern>
</Layout>
</Appender>
</Appenders>
<Loggers>
<Root level="ERROR">
<AppenderRef ref="Console"/>
<AppenderRef ref="FileAppender" level="WARN"/>
</Root>
</Loggers>
</Configuration>
Je également configuré catalina.properties, juste au cas où, pour surcharger jars par défautToSkip:
tomcat.util.scan.StandardJarScanFilter.jarsToScan=log4j-core*.jar,log4j-taglib*.jar,log4j-api*.jar,log4j-web*.jar,log4j-jcl*.jar`
Je crois log4j est correctement initialisé comme catalina * états .log, en raison de l'état = « TRACE »:
2017-02-08 14:06:52,355 http-nio-8080-exec-8 DEBUG Log4jServletContextListener ensuring that Log4j starts up properly.
2017-02-08 14:06:52,357 http-nio-8080-exec-8 DEBUG Log4jServletFilter initialized.
Et aussi parce que le fichier journal est créé.
Cependant, tous les messages d'erreur d'exécution provenant de l'application (jar de service Web) se terminent en catalina * .log au lieu de l'appender que j'ai configuré. En outre, ces messages d'erreur dans catalina * .log ne suivent aucun modèle défini dans les définitions Appenders, donc il semble que log4j2 soit ignoré.
Qu'est-ce que je fais mal?