J'ai recherché des questions similaires, mais aucune des réponses n'a vraiment résolu le problème. J'ai une application Spring Boot configurée pour utiliser slf4j + log4j2 (avec une configuration log4j2.xml interne dans src/main/resources
). Je déploie cette guerre sur JBoss EAP (6.4 & 7) et peux voir les traces de journal du démarrage de JBoss. Le problème est que log4j2 appenders juste ne pas imprimer quoi que ce soit, ni sur la console ni sur le fichier:JBoss EAP 6.4/7 - La configuration log4j2.xml interne de l'application Spring Boot ne s'exécute pas sur la console
Dans la console que les journaux de journalisation jboss apparaissent (tous les log.info() dans mon traces d'application avec le format de journalisation jboss).
Un
c:\logs\out.log
est créé mais rien n'est écrit dessus.
Ce sont les choses que je l'ai fait:
Je débogués et vérifié que Printemps Boot
Log4J2LoggingSystem
est correctecty initialisé avec le fichierclasspath:log4j2.xml
.Mon application utilise SLF4J et pendant le débogage j'ai vu que la mise en œuvre de l'exploitation forestière sous-jacente est l'exploitation forestière de JBoss au lieu de Log4j2
L'enregistrement de log4j2 fonctionne correctement sur Tomcat.
Dans standalone.xml j'ai supprimé
<extension module="org.jboss.as.logging"/>
et le bloc<subsystem xmlns="urn:jboss:domain:logging:3.0">
. Après cela, seules quelques traces jboss sont imprimées sur la console (mais rien de l'application log.info()), mais l'appender log4j2 imprime correctement.
Comment configurer JBoss pour prendre en charge l'impression log4j2.xml de l'application sur la console et un fichier?
Extrait log4j2.xml:
<Configuration status="WARN">
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout ...
<RollingFile name="file"
filePattern="'.'%d{yyyy-MM-dd}"
fileName="c:\logs\out.log">
<PatternLayout
pattern="%d{yyyy-MM-dd'T'HH:mm:ss.SSS} - %c{1.} %5p - %m%n" />
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
<Logger name="org.springframework" level="info" additivity="false">
<AppenderRef ref="file" />
<AppenderRef ref="console" />
</Logger>
</Configuration>
MISE À JOUR
Le problème a à voir avec la façon dont JBoss gère SLF4J:
org.slf4j.Logger slf4jLogger = org.slf4j.LoggerFactory.getLogger(PresupuestoController.class);
org.apache.logging.log4j.Logger log4j2Logger = LogManager.getLogger(PresupuestoController.class);
Si je cours slf4jLogger.info("SLF4J!!!");
. Il imprime avec l'enregistreur JBoss sous-jacent:
11:19:03,122 INFO [com.my.web.SomeController] (default task-2) SLF4J!!!
mais quand j'exécute log4j2Logger.info("LOG4J2!!!");
imprime sur la console suivant la configuration de mon log4j2.xml:
11:19:03,668 INFO [stdout] (default task-2) 2016-05-19T11:19:03.663 c.m.w.SomeController INFO - LOG4J2!!!
Comme condition que je dois utiliser SFL4J dans le code J'ai donc besoin d'un moyen de forcer à utiliser Log4j2 au lieu de JBoss.
Ne fonctionnait pas pour moi dans JBoss AS 7.1. Etes-vous sûr que ce qui précède est la seule chose à faire? N'avez-vous pas manqué des étapes supplémentaires? –