Tomcat Logging Mit Slf4j und Log4j
Habe ich eine web-app bereitgestellt, um eine Tomcat 7
server. Meine Anwendung verwendet log4j
und ein file appender
. Jedoch, nicht alle log-Nachrichten werden immer in die Datei geschrieben.
Auf meinem classpath habe ich:
log4j-1.2.14.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
Meine log4j.properties
- Datei funktioniert auf meinem lokalen Rechner und ist ordnungsgemäß implementiert.
Sehe ich von der Anwendung generierte Fehlermeldungen geschrieben catalina.out
sind nicht immer geschrieben, um meine log4j log
. Die log-Meldungen in catalina.out
sehen werden, kommen von einigen anderen logging-framework, da die Ausgabe Muster ist in einem anderen format als meine log4j
Muster. Die Protokollierung, die ich bin zu sehen in der catalina.log
ist wie:
Nov 4, 2011 11:05:31 AM org.apache.myfaces.shared_impl.util.StateUtils reconstruct
SEVERE
Und meine log4j Muster ist wie:
2011-11-03 16:42:09,336 ["http-bio-8080"-exec-13] ERROR
Einige logging erscheint in meinem log4j
log-Datei, aber nicht alle. Von dem was ich gelesen habe slf4j
braucht nur diese Gläser für Sie zu Trichter log-Ausgabe. Irgendwelche Ideen?
- Sie könnten versuchen, mit der slf4j jar namens "log4j-over-slf4j-1.6.1.jar" statt das log4j-jar namens "log4j-1.2.14.jar"
- log4j-over-slf4j.jar ist eine log4j-Ersatz. Der Fragesteller will nicht ersetzen log4j. DwB, schlage ich vor, dass Sie löschen Ihren Kommentar, da es irreführend ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen, einschließlich der jcl-over-slf4j als Abhängigkeit. myfaces ist wahrscheinlich mit commons-logging.
überprüfen Sie die slf4j docs: http://www.slf4j.org/legacy.html#jcl-over-slf4j
Sieht es aus wie die StateUtils Klasse ist mit Hilfe von java.util.logging (jul). Es steht auf Grund, dass andere myfaces Klassen auch verwenden, jul. So würden Sie wahrscheinlich wollen, um Trichter-jul-Protokolle durch SLF4J. Haben Sie einen Blick auf bridging-legacy-APIs, insbesondere die
jul-to-slf4j
Brücke.Finden Sie SLF4JBridgeHandler javadocs für die Benutzung Anweisungen bei der Installation
jul-to-slf4j
.LevelChangePropagator
hat nicht geklappt. Aber das ist ein anderes Thema. Trotzdem danke. Im 1. Fall,ich habe 2 Nachrichten für jedes Protokoll (dh, wie in diesem:)INFO j.e.s.s.c.s.e.server.logging -> INFO o.a.m.webapp.WebConfigParamsLogger -> No context init parameter ... found.
INFO o.a.m.webapp.WebConfigParamsLogger -> No context init parameter ... found
Konfigurieren Sie Ihren tomcat-server entsprechend den beschriebenen Schritten an http://adfinmunich.blogspot.de/2012/03/how-to-configure-tomcat-to-use-slf4j.html. Dieser blog-Eintrag beschreibt, wie ersetzen java.util.Protokollierung von slf4j (mit log4j hinter der Fassade).