2016-07-19 64 views
0

Ich habe zwei EARs in Websphere 8.5.3 mit verschiedenen log4j-Konfigurationen implementiert. Der Server generiert jedoch nur eine Protokolldatei. Wenn ich die EARs einzeln bereitstelle, generiert der Server die Protokolldatei. Wenn jedoch beide EARs bereitgestellt werden, wird vom Server nur eine Protokolldatei generiert. Ich habe die Klassen slf4j-log4j im Klassenpfad und eine lo4j.properties im WAR-Modul jedes EARs. Kann jemand bitte helfen Sie mir, was los ist mit dem Websphere JVM zu verstehen, oder wenn ich etwas falsch zu machenWebsphere 8.5.3, SLF4j Log4j, mehrere EARs, mehrere Protokolldateien werden nicht generiert

log4j.rootLogger=INFO 
log4j.logger.com.code.first=INFO,appOne 
log4j.appender.appOne=org.apache.log4j.RollingFileAppender 
log4j.appender.appOne.Name=ApplicationLogAppender 
log4j.appender.appOne.File=/logPath/AppOneLog.log 
log4j.appender.appOne.layout=org.apache.log4j.PatternLayout 
log4j.appender.appOne.MaxFileSize=10MB 
log4j.appender.appOne.MaxBackupIndex=10 
log4j.appender.appOne.layout.ConversionPattern=%d %-5p %t - %m%n 
log4j.appender.appOne.Threshold=DEBUG 
log4j.appender.appOne.Append=false 


log4j.rootLogger=INFO 
log4j.logger.com.code.second=INFO,appTwo 
log4j.appender.appTwo=org.apache.log4j.RollingFileAppender 
log4j.appender.appTwo.Name=ApplicationLogAppender 
log4j.appender.appTwo.File=/logPath/AppTwolog.log 
log4j.appender.appTwo.layout=org.apache.log4j.PatternLayout 
log4j.appender.appTwo.MaxFileSize=10MB 
log4j.appender.appTwo.MaxBackupIndex=10 
log4j.appender.appTwo.layout.ConversionPattern=%d %-5p %t - %m%n 
log4j.appender.appTwo.Threshold=DEBUG 
log4j.appender.appTwo.Append=false 

Antwort

0

Dieses:

Ich habe die slf4j-log4j Gläser auf den Klassenpfad

Bedeutet das, dass die gleiche log4j JAR zwischen den Anwendungen geteilt wird? Es kann ein Problem geben, dass die log4j-Klassen nur einmal geladen und zwischen den Anwendungen geteilt werden. Können Sie versuchen, die log4j-JAR in jedem WEB-INF/lib-Ordner des Web-Moduls zu platzieren? Dadurch erhalten alle Webmodule eine eigene Ladung der log4j-Klassen und können das Problem beheben. (Da auch log4j Klassen auch vom Server verwendet werden, stellen Sie sicher, dass Sie zuerst die Web-Module Belastungsklassen von sich selbst haben.)

Thomas Bitonti, IBM WebSphere Application Server-Entwicklung

+0

Danke für die Beantwortung. Ja. Ich habe die Maven-Abhängigkeiten entfernt. Jedes Web-Modul hat die JAR-Dateien im Ordner WeB-INF/lib. Außerdem habe ich explizit die Klassenladevoreinstellungen als Eltern über die WAR-Module gesetzt – RaajM

+0

Tritt das Problem immer noch mit den Änderungen auf, oder wurde es gelöst? –

+0

Wenn das Problem weiterhin auftritt, können Sie den Klassenlader anzeigen, mit dem die Loggerklassen geladen wurden: Loggerlogger = getSomeLogger(); System.out.println ("Logger [" + Logger + "] ClassLoader [" + logger.getClass(). GetClassLoader() + "]"); –