tomcat 日志中 SLF4JBridgeHandler 中的处理程序错误

Dex*_*ter 5 logging tomcat logback slf4j java.util.logging

我的 tomcat 日志当前混合了不同格式的日志消息。所以我尝试使用 JUL 到 SLF4J 桥来设置 SLF4J。

我最初收到的日志消息如下

五月 23, 2013 7:57:17 PM org.apache.catalina.core.StandardService startInternal
INFO: 启动服务 Catalina
五月 23, 2013 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-05-23 19: 57:47,246 [localhost-startStop-1] 从类路径资源加载 XML bean 定义 [META-INF/cxf/cxf-servlet.xml]

我从这里关注了博客.. http://hwellmann.blogspot.com/2012/11/logging-with-slf4j-and-logback-in.html

我正在为 SLF4J 使用以下 jar: jul-to-slf4j-1.7.5.jar、slf4j-api-1.7.5.jar

并在logging.properties中

处理程序 = org.slf4j.bridge.SLF4JBridgeHandler

我目前没有收到混合消息,但在启动 tomcat 时收到。它不是打印tomcat格式,而是抛出Handler错误

下面是日志的片段

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
Run Code Online (Sandbox Code Playgroud)

我已经解决这个问题好几天了,尝试了很多组合,但找不到任何运气。

提前致谢!

小智 3

只需为 Linux 创建或编辑 CATALINA_HOME/bin/setenv.sh:

CLASSPATH=$CATALINA_HOME/bin/jul-to-slf4j-1.7.5.jar:\  
$CATALINA_HOME/bin/slf4j-api-1.7.5.jar
Run Code Online (Sandbox Code Playgroud)

或用于 Windows 的 CATALINA_HOME\bin\setenv.bat:

set CLASSPATH=%CATALINA_HOME%\bin\jul-to-slf4j-1.7.5.jar;^
%CATALINA_HOME%\bin\slf4j-api-1.7.5.jar
Run Code Online (Sandbox Code Playgroud)