[slf4j-user] Trouble setting up logback/slf4j in tomcat.

Jacob Kjome hoju at visi.com
Fri Dec 22 17:57:57 CET 2006


At 07:14 AM 12/22/2006, you wrote:
 >Hello Jacob,
 >
 >In Marten's situation, I see three important points.
 >
 >1. Use logback as a logger for his application.
 >2. Intercept the logging from other applications and frameworks
 >running under Tomcat
 >thanks to jcl104-over-slf4j.
 >3. Intercept Tomcat's *internal* logging and direct it to logback. I
 >mean: what the
 >Tomcat internal classes, like org.apache.catalina.* or
 >org.apache.tomcat.* classes,
 >log, by intercepting their calls to commons-logging.
 >
 >My email was about that last situation. Placing 
a jar in commons/lib makes it
 >available to the applications, but doesn't make it available to the
 >Tomcat classes
 >when you launch the server. Maybe I did not express myself very
 >clearly about this
 >point, if that is the case, please excuse me.
 >
 >As far as I know, log4j and logback are not different at this level.
 >On the logback
 >side, we do not have a perfect solution to this problem yet.
 >

Actually, I was talking specifically about 
#3.  I'll say it again.  I put log4j.jar and 
commons-logging.jar in common/lib.  I put my 
config file in common/classes.  For 
Log4j-1.2.xx.jar, the config file has to be 
log4j.properties because the DTD for log4j.jar 
doesn't allow for the logger names that Tomcat 
uses because the DTD defines the <logger> "name" 
attribute as of type ID and Tomcat's naming 
scheme includes characters that are not allowed 
on attributes of type ID.  Log4j-1.3.jar doesn't 
not have this issue because there is no DTD (it 
uses Joran, just like Logback).  Here's a sample config for Log4j-1.2.xx...

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-5p[%-8.8t]: %39.39c %-6r - %m%n

log4j.appender.LOCALHOST=org.apache.log4j.RollingFileAppender
log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.log
log4j.appender.LOCALHOST.MaxFileSize=1000KB
log4j.appender.LOCALHOST.MaxBackupIndex=1
log4j.appender.LOCALHOST.layout=org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern=%-5p[%-8.8t]: 
%39.39c %-6r - %m%n

log4j.appender.MYAPP=org.apache.log4j.DailyRollingFileAppender
log4j.appender.MYAPP.File=${catalina.base}/logs/localhost_myapp.log
log4j.appender.MYAPP.DatePattern='.'yyyy-MM-dd
log4j.appender.MYAPP.layout=org.apache.log4j.PatternLayout
log4j.appender.MYAPP.layout.ConversionPattern=%c{1} %-6r - %m%n

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myapp]=INFO, 
MYAPP
log4j.additivity.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/istatus]=false

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, 
LOCALHOST
log4j.additivity.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=false

log4j.rootLogger=INFO, A1


Here's some sample logging from the LOCALHOST log....

INFO [Thread-1]: 
Base.[Catalina].[localhost].[/balancer] 18757  - 
org.apache.webapp.balancer.BalancerFilter: 
init(): ruleChain: 
[org.apache.webapp.balancer.RuleChain: 
[org.apache.webapp.balancer.rules.URLStringMatchRule: 
Target string: News / Redirect URL: 
http://www.cnn.com], 
[org.apache.webapp.balancer.rules.RequestParameterRule: 
Target param name: paramName / Target param 
value: paramValue / Redirect URL: 
http://www.yahoo.com], 
[org.apache.webapp.balancer.rules.AcceptEverythingRule: 
Redirect URL: http://jakarta.apache.org]]
INFO [Thread-1]: 
.[Catalina].[localhost].[/jsp-examples] 18997  - 
ContextListener: contextInitialized()
INFO [Thread-1]: 
.[Catalina].[localhost].[/jsp-examples] 18997  - 
SessionListener: contextInitialized()
INFO [Thread-1]: 
alina].[localhost].[/servlets-examples] 21591  - 
ContextListener: contextInitialized()
INFO [Thread-1]: 
alina].[localhost].[/servlets-examples] 21591  - 
SessionListener: contextInitialized()
INFO [Thread-1]: 
.[Catalina].[localhost].[/jsp-examples] 818967 - 
SessionListener: contextDestroyed()
INFO [Thread-1]: 
.[Catalina].[localhost].[/jsp-examples] 818967 - 
ContextListener: contextDestroyed()
INFO [Thread-1]: 
alina].[localhost].[/servlets-examples] 820069 - 
SessionListener: contextDestroyed()
INFO [Thread-1]: 
alina].[localhost].[/servlets-examples] 820069 - 
ContextListener: contextDestroyed()


Still don't believe me?

Jake

 >Cheers,
 >
 >Sébastien
 >
 >
 >Jacob Kjome wrote:
 >> Hi Sebastien,
 >>
 >> Why do you say that logback needs to be in
 >> ${catalina.home}/bin and added to the classpath
 >> in order to get used for logging by
 >> Tomcat?  That's not the case for Log4j
 >> integration.  Simply put log4j.jar and
 >> commons-logging.jar in common/lib and a config
 >> file in common/classes and you've now got Tomcat
 >> logging going through Log4j.  Why would this be different for Logback?
 >>
 >> Jake
 >>
 >> At 06:38 AM 12/20/2006, you wrote:
 >>  >Hello Marten,
 >>  >
 >>  >I've just answered to your first email on the logback-user list.
 >>  >
 >>  >I'll link the answer here not to leave this message unanswered.
 >>  >
 >>  >http://qos.ch/pipermail/logback-user/2006-December/000061.html
 >>  >
 >>  >Thanks for your interest in slf4j and logback :)
 >>  >
 >>  >Sébastien
 >>  >
 >>  >
 >>  >Marten Deinum wrote:
 >>  >> For my current project I would like to switch out all the
 >logging which is
 >>  >> currently being done by log4j and here en 
there by commons-logging to one
 >>  >> framework. After some searching I discoverd SLF4J and Logback as the
 >>  >successor
 >>  >> to log4j. In your code I swapped out all the
 >> log4j and commons-logging to the
 >>  >> SLF4J api and I want to use Logback as my logger. I converted our
 >>  >> log4j.properties file with the configuration converter on the
 >website, so I
 >>  >> assume that is correct.
 >>  >>
 >>  >> In the tomcat directory I have the following logging libs (I want
 >>  >tomcat to use
 >>  >> SLF4J to)
 >>  >> commons/lib/commons-logging-1.1.jar
 >>  >> commons/lib/jcl104-over-slf4j-1.1.0-RC1.jar
 >>  >> commons/classes/logback.xml
 >>  >>
 >>  >> In our webapplication (which is a packaged war and doesn't get
 >>  >unpacked!) I have
 >>  >> WEB-INF/lib/slf4j-api-1.1.0-RC1.jar
 >>  >> WEB-INF/lib/logback-classic-0.7.jar
 >>  >> WEB-INF/lib/logback-core-0.7.jar
 >>  >> WEB-INF/classes/logback.xml
 >>  >>
 >>  >> The contents of the logback.xml in the commons directory just
 >>  >contains a simple
 >>  >> ConsoleAppender and is configured to WARN level.
 >>  >>
 >>  >> The file in the WEB-INF directory is 
configured as a file which should be
 >>  >> written to c:\logs\mylog.log, configured different levels for
 >>  >different packages
 >>  >> we use.
 >>  >>
 >>  >> However logback isn't getting picked up, everything is being
 >logged by the
 >>  >> java.util classes (as it appears thatone is being initialized by
 >>  >tomcat instead
 >>  >> of the logback logger).
 >>  >>
 >>  >> I tried different configurations, all the logback/slf4j jars in the
 >>  >commons/lib
 >>  >> and one config file in commons/classes. 
Different jars in commons/lib and
 >>  >> WEB-INF/lib but until now everytime with the
 >> same result, only logging to JUL
 >>  >> and nothing to logback and my configured logfile.
 >>  >>
 >>  >> Currently I'm at a loss on what to do and how to make it work. I
 >need some
 >>  >> assistance with this.
 >>  >>
 >>  >> Kind Regards,
 >>  >>  Marten
 >>  >>
 >>  >> _______________________________________________
 >>  >> user mailing list
 >>  >> user at slf4j.org
 >>  >> http://www.slf4j.org/mailman/listinfo/user
 >>  >>
 >>  >
 >>  >--
 >>  >Sébastien Pennec
 >>  >sebastien at qos.ch
 >>  >
 >>  >Logback: The reliable, generic, fast and flexible logging
 >framework for Java.
 >>  >http://logback.qos.ch/
 >>  >_______________________________________________
 >>  >user mailing list
 >>  >user at slf4j.org
 >>  >http://www.slf4j.org/mailman/listinfo/user
 >>
 >> _______________________________________________
 >> user mailing list
 >> user at slf4j.org
 >> http://www.slf4j.org/mailman/listinfo/user
 >>
 >
 >--
 >Sébastien Pennec
 >sebastien at qos.ch
 >
 >Logback: The reliable, generic, fast and flexible logging framework for Java.
 >http://logback.qos.ch/
 >_______________________________________________
 >user mailing list
 >user at slf4j.org
 >http://www.slf4j.org/mailman/listinfo/user




More information about the slf4j-user mailing list