tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Adrian Robert <>
Subject Re: How to approximate tomcat-5.0/4.x/3.x logging in 5.5?
Date Wed, 02 Mar 2005 14:22:33 GMT

On Mar 2, 2005, at 12:25 AM, Jacob Kjome wrote:

> You first talk about ServletContext.log(), but then talk about log4j  
> loggers in your app.  These are two completely separate things.  Which  
> were you focusing on?  With your setup, it it makes sense that  
> ServletContext.log() messages are going to catalina.log.  However, if  
> you have log4j.jar in WEB-INF/lib and your application log4j logging  
> is going to catalina.log, then your setup is different than what you  
> describe here.  There is quite simply no way that can happen given the  
> setup you've described.  They should go to "bar.log" since that's the  
> only appender that your application's log4j configuration can see.  In  
> any case, you don't need a separate log4j.jar in WEB-INF/lib for  
> ServletContext.log() messages to go to app-specific log files.  Just  
> define those in your just like you have defined the  
> host logger.  Here's my setup for Log4j-1.2.9 in  
> common/ (You can use log4j.xml when using  
> Log4j-1.3 because it uses a the new JoranConfigurator which doesn't  
> define a log4j.dtd.  The current DOMConfigurator's dtd defines the  
> <logger> "name" attribute as an ID and the host and context logger  
> names that Tomcat uses characters not allowed in attributes of type  
> "id")....

Thanks for your input.. I realize I wasn't clear about one thing.  I  
don't want to define webapp-specific logging in the tomcat-global file.  Instead, I want individual  
stored under webapp/*/WEB-INF/classes to cause logging to web-app  
specific files, without the container needing to be hard-coded for the  
webapps it is hosting.  I was trying to achieve this with multiple  
separate, one in the container (common/classes/) for  
the uncaught stack trace and other general logging, and others in each  
webapp.  With my setup below I was expecting to get THREE files:  
catalina.out (with stdout/err), tomcat.log (with the container's log4j  
output), and bar.log (with the webapp's log4j output, which I changed  
from ServletContext.log() to use  Instead, I got only  
catalina.out and tomcat.log, the latter containing everything that I  
thought the webapp would be sending to bar.log.

> ...
> st].[/myapp]=INFO, MYAPP
> alhost].[/myapp]=false

I don't understand this bracket notation.  Is it documented anywhere?   
Is interpretation of it something implemented by tomcat or by log4j?   
Would it help me achieve what I'm trying to get without changing my  
webapp's code away from ServletContext.log()?

> BTW, you don't need commons-logging in your webapp.  It is only Tomcat  
> that needs it, so just put it in common/lib, not WEB-INF/lib.  You can  
> continue to put log4j.jar in both places if you desire.  Otherwise,  
> you can also use a repository selector to separate webapp logging with  
> a single log4j.jar in common/lib.  This makes more sense to start  
> doing with Log4j-1.3, though, using the ContextJNDISelector.  You get  
> the same effect by having log4j.jar in WEB-INF/lib since the  
> classloader isolation will, effectively, create logging isolation per  
> webapp.

Hmm..  I'm using log4j-1.2.9.  I had the jar in both places but wasn't  
getting the isolation since my webapp was still pumping things into  
tomcat.log according to the container's  However,  
I'm creating the logger in a static block in one of my webapp's classes  
-- could that have been the issue?

> At 06:18 PM 3/1/2005 -0500, you wrote:
> >I'm having trouble approximating the earlier tomcat per-context
> ><Logger> functionality using log4j under tomcat-5.5.  Basically, I
> >would like to have one file coming out under $CATALINA_BASE/logs/ per
> >web application context.  This appears to be no longer possible  
> through
> >ServletContext.log().  So I tried using log4j:
> >
> >1) put log4j.jar, commons-logging.jar in common/lib AND
> >webapps/*/WEB-INF/lib
> >2) put in common/classes AND  
> webapps/*/WEB-INF/classes
> >
> >However, I can't seem to find the right combination of  
> >lines, or maybe I'm trying something impossible.  (I can't find good
> >docs on the uses of when used inside the hierarchical
> >classloading context that tomcat provides.)  What keeps happening is
> >that the webapp's log statements keep going into the global tomcat  
> log.
> >  Would I be better off with JDK logging instead?
> >
> >common/classes/
> >-------------------
> >log4j.rootLogger               info, R
> >log4j.appender.R               org.apache.log4j.RollingFileAppender
> >log4j.appender.R.File          ${catalina.base}/logs/tomcat.log
> >log4j.appender.R.MaxFileSize   10MB
> >log4j.appender.R.MaxBackupIndex        10
> >log4j.appender.R.layout                org.apache.log4j.PatternLayout
> >
> >log4j.appender.R.layout.ConversionPattern      %p %t %c - %m%n
> >
> >                      info, R
> >              info, R
> >  info, R
> >
> >[Catalina].[localh 
> os
> >t]=info, R
> >-------------------
> >
> >webapp/*/classes/
> >-------------------
> ># is this necessary?  tried with and without...
> >log4j.rootLogger               info, A1
> >
> > , A1
> >log4j.appender.A1               
> org.apache.log4j.DailyRollingFileAppender
> >log4j.appender.A1.File         ${catalina.base}/logs/bar.log
> >log4j.appender.A1.MaxFileSize  10MB
> >
> >log4j.appender.A1.MaxBackupIndex       10
> >log4j.appender.A1.layout               org.apache.log4j.PatternLayout
> >log4j.appender.A1.Append       true
> >
> >log4j.appender.A1.layout.ConversionPattern     %p %t %c - %m%n
> >
> >   info, A1
> >-------------------
> >
> >Code in webapp:
> >-------------------
> >Logger logger = Logger.getLogger("");
> >"bar");
> >-------------------
> >
> >Any help appreciated..
> >

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message