2013-05-09 97 views
3

我的tomcat日志目前混合了不同格式的日志消息。所以我试图用JUL-to-SLF4J桥架设SLF4J。Tomcat日志中的SLF4JBridgeHandler中的处理程序错误

我最初得到的日志信息像

2013年5月23日下午7时57分17秒org.apache.catalina.core.StandardService startInternal
信息:启动服务卡塔利娜
2013年5月23日7:57:17 PM org.apache.catalina.core.StandardEngine startInternal
INFO:启动Servlet引擎:Apache Tomcat/7.0.29
2013-05-23 19:57:47,224 [localhost-startStop-1]正在加载来自类路径资源的XML bean定义[META-INF/cxf/cxf.xml]
2013年5月23日19:57:47246 [本地主机-startStop-1]从类路径资源加载XML bean定义[META-INF/CXF/CXF-servlet.xml中]

我跟着从博客在这里.. http://hwellmann.blogspot.com/2012/11/logging-with-slf4j-and-logback-in.html

现在用下面的罐子SLF4J: 七月到SLF4J-1.7.5.jar, SLF4J-API-1.7.5.jar

和记录。属性

处理器= org.slf4j.bridge.SLF4JBridgeHandler

我目前没有得到含混不清的信息,但在Tomcat的开始。它不打印tomcat的格式,但它抛出处理程序错误

下面是日志

Handler error 
java.lang.ClassNotFoundException: org.slf4j.bridge.SLF4JBridgeHandler 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:521) 
    at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:464) 
    at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:288) 
    at java.util.logging.LogManager$2.run(LogManager.java:278) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.util.logging.LogManager.readPrimordialConfiguration(LogManager.java:276) 
    at java.util.logging.LogManager.getLogManager(LogManager.java:259) 
    at java.util.logging.Logger.<init>(Logger.java:245) 
    at java.util.logging.LogManager$RootLogger.<init>(LogManager.java:1104) 
    at java.util.logging.LogManager$RootLogger.<init>(LogManager.java:1101) 
    at java.util.logging.LogManager$1.run(LogManager.java:199) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.util.logging.LogManager.<clinit>(LogManager.java:176) 
    at java.util.logging.Logger.getLogger(Logger.java:307) 
    at com.sun.jmx.remote.util.ClassLogger.<init>(ClassLogger.java:55) 
    at sun.management.jmxremote.ConnectorBootstrap.<clinit>(ConnectorBootstrap.java:739) 
    at sun.management.Agent.startAgent(Agent.java:147) 
    at sun.management.Agent.startAgent(Agent.java:289) 
***startInternal() called 
***startInternal() JoranConfigurator 

我一直在这个问题上的天片断,尝试了很多组合,但想不出找到任何运气。

在此先感谢!

+0

很长一段时间......但我想我有同样的问题。我的错误是我复制了/ lib中的额外jar而不是/ bin。确保将它们复制到/ bin中,并且setenv.sh正在设置正确的CLASSPATH,如说明中所述。现在它工作了! – zmirc 2015-05-12 22:33:07

回答

1

只要创建或用于Linux编辑CATALINA_HOME /斌/ setenv.sh:

CLASSPATH=$CATALINA_HOME/bin/jul-to-slf4j-1.7.5.jar:\ 
$CATALINA_HOME/bin/slf4j-api-1.7.5.jar 

或CATALINA_HOME \ BIN \ setenv.bat对于Windows:从那时起

set CLASSPATH=%CATALINA_HOME%\bin\jul-to-slf4j-1.7.5.jar;^ 
%CATALINA_HOME%\bin\slf4j-api-1.7.5.jar 
+0

在我的ubuntu服务器上,'find/-name setenv.sh'什么也没有返回 – 2015-10-03 15:23:09

+0

默认情况下,setenv脚本文件不存在。如果你需要一个,你必须创建它。该脚本放置在CATALINA_BASE/bin或CATALINA_HOME/bin目录中。例如,我的ubuntu脚本位于/usr/share/tomcat8/bin/setenv.sh中。 – Minu 2015-10-04 20:52:07