[logback-dev] [JIRA] Commented: (LBCLASSIC-212) Logback classic doesn't work with Tomcat

Andy Duplain (JIRA) noreply-jira at qos.ch
Tue Jul 6 13:16:16 CEST 2010

    [ http://jira.qos.ch/browse/LBCLASSIC-212?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=11785#action_11785 ] 

Andy Duplain commented on LBCLASSIC-212:

I can confirm this issue; after failing to find a datasource during Servlet initiation, the server appears to lock-up (I have added a message after the exception report and this message doesn't show up).

I am using tomcat 6.0.26, logback-core and -classic 0.9.21 with slf4j-api-1.6.0.  All logback and slf4j jars are installed into tomcat/lib and are not part of the application's war file.

Example log output:

INFO: Metro monitoring rootname successfully set to: com.sun.metro:pp=/,type=WSEndpoint,name=/fdews-ActionsService-ActionsPort
12:04:07.704 [main] DEBUG com.neuralt.fdews.ActionsServlet - init(config)
12:04:07.708 [main] DEBUG com.neuralt.fdews.Actions - init
12:04:07.710 [main] DEBUG com.neuralt.util.DbConnection - Getting JNDI connection 'dev10g21'
12:04:07.717 [main] ERROR com.neuralt.util.DbConnection - Exception while getting database connection
javax.naming.NameNotFoundException: Name dev10g21 is not bound in this Context

> Logback classic doesn't work with Tomcat
> ----------------------------------------
>                 Key: LBCLASSIC-212
>                 URL: http://jira.qos.ch/browse/LBCLASSIC-212
>             Project: logback-classic
>          Issue Type: Bug
>    Affects Versions: 0.9.21
>            Reporter: Grzegorz Borkowski
>            Assignee: Logback dev list
>            Priority: Critical
> We have a web application running on Tomcat 6.0.26, which uses SLF4J for logging. Until now, we used SLF4J-Simple, and it worked very well. Now we try to switch to Logback, but we are not able to make it work. It works for logging one-line messages. But whenever any exception is thrown on server, which should print a stack trace, server hangs (It doesn't matter whether we actually print the stack trace in log or not). From what I was able to observe, it looks like it falls into endless loop, throwing "ClassNotFoundException: ch.qos.logback.classic.spi.ThrowableProxyUtil", which is caught and tried to be logged, which throws this exception again, and so on. I don't know why it throws this ClassNotFoundException - perhaps classloader issue? But even copying the logback jars to Tomcat's lib directory, I'm not able to run the application: than it has problems with starting up. Sometimes it freezes during loading web app, and often it helps to attach and detach debugger to Tomcat - it's a kind of magic... Anyway, it's horrendously painful, and I'm not able to make it work. Why such common setup (webapp on Tomcat) is not described in Logback documentation???
> This is our configuration file :
> <configuration scan="true">
>   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
>     <!-- encoders are assigned the type
>          ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
>     <encoder>
>       <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n%ex</pattern>
>     </encoder>
>   </appender>
>   <root level="info">
>     <appender-ref ref="STDOUT" />
>   </root>
> </configuration>
>  (changing scan to "false" doesn't help. Also changing pattern  to  the one not containing "%ex" doesn't help)
> This is part of pom file related to logging:
>          <dependency>
>             <groupId>org.slf4j</groupId>
>             <artifactId>slf4j-api</artifactId>
>             <version>1.6.0</version>
>         </dependency>
>         <dependency>
>             <groupId>ch.qos.logback</groupId>
>             <artifactId>logback-classic</artifactId>
>             <version>0.9.21</version>
>             <scope>runtime</scope>
>         </dependency>
>         <!-- prevent JCL bundling into final WAR by using scope="provided" -->
>         <dependency>
>             <groupId>commons-logging</groupId>
>             <artifactId>commons-logging</artifactId>
>             <version>1.1.1</version>
>             <scope>provided</scope>
>         </dependency>
>         <!-- use this as adpater to satisfy dependencies on JCL -->
>         <dependency>
>             <groupId>org.slf4j</groupId>
>             <artifactId>jcl-over-slf4j</artifactId>
>             <version>1.6.0</version>
>         </dependency>
> If  we change dependency from logback to SLF4J simple (1.6.0) than everything works smoothly, stacktraces are printed to console, no freezing, everything is perfect.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the logback-dev mailing list