Hi Kent!
Our test environment it is exactly the same Tomcat 4.1.25/W2k, log4j 1.2.8
but we use the old-fashionate way to initialize log4j in a servlet'S init()
and setup the web.xml to "load-on-startup" one. And everything is working fine
... for almost an year.
Hope it's useful,
Lucian.
> All,
>
> I have been trying all day to get Tomcat and Log4J to cooperate. I have
> looked through many posts to this mailing list but have been unable to
> find
> any extra information that helps me.
>
> I am running Tomcat 4.1.27 on a Windows 2000 machine. My web app has
> log4j-1.2.8.jar in its WEB-INF/lib directory. I have a config file called
> log4j.xml in my WEB-INF directory. To load the configuration, I have a
> ContextStartupListener implementation with this code in it:
>
> //first things first - initialise the logging sub-system
> try {
> System.out.println("Initialising Log4J . . .");
> String configFile =
> WebAppContext.getContextParameter("log4j-config-file");
>
> //provide default
> if ((configFile == null) || ("".equals(configFile.trim())))
> {
> configFile = "/WEB-INF/log4j.xml";
> }
>
> String filename =
> getServletContext().getRealPath(configFile);
>
> DOMConfigurator.configure(filename);
> System.out.println(". . . done");
> } catch (Throwable t) {
> System.err.println("Exception occurred: " + t);
> t.printStackTrace(new PrintWriter(System.err));
> }
>
> //now create the log
> log =
>
org.apache.commons.logging.LogFactory.getFactory().getInstance(StartupListen
> er.class);
>
> log.trace("trace enabled");
> log.debug("debug enabled");
> log.info("info enabled");
> log.warn("warn enabled");
> log.error("error enabled");
> log.fatal("fatal enabled");
>
> My log4j.xml file is defined as:
>
> <?xml version="1.0"?>
> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
>
> <log4j:configuration debug="false"
> xmlns:log4j="http://jakarta.apache.org/log4j/">
> <appender name="custom"
> class="org.apache.log4j.DailyRollingFileAppender">
> <param name="File"
> value="${CATALINA_HOME}/logs/custom.log"/>
> <param name="DatePattern" value="'.'yyyy-MM-dd"/>
>
> <layout class="org.apache.log4j.PatternLayout">
> <param name="ConversionPattern" value="%d
> %-5p [%c] %m%n"/>
> </layout>
> </appender>
>
> <root>
> <level value="debug"/>
> <appender-ref ref="custom"/>
> </root>
> </log4j:configuration>
>
> As you can see, I have tried to redirect all logging for my webapp to a
> custom log file. If I set the log4j.debug system property to true, I can
> see
> that Log4J is successfully finding and using my configuration file.
> Indeed,
> the custom.log file is created. However, none of my log statements are
> directed to this file. Instead, they go straight to the console as per
> usual. Also, the debug level is the same as usual (ie. level is info
> instead
> of debug as specified in config file).
>
> What's really interesting is that there is some output in custom.log.
> However, this output belongs to JBoss client classes (my application
> utilises JBoss as an app server). Note that I am running Tomcat standalone
> -
> not as part of a JBoss installation. Here is a sample from custom.log:
>
> 2003-12-17 14:54:13,653 DEBUG
> [org.jboss.mq.referenceable.SpyConnectionFactoryObjectFactory] Extracting
> SpyConnectionFactory from reference
> 2003-12-17 14:54:13,914 DEBUG
> [org.jboss.mq.referenceable.SpyConnectionFactoryObjectFactory] The
> GenericConnectionFactory is:
>
GenericConnectionFactory:[EMAIL PROTECTED],conne
> ctionProperties={UIL_ADDRESS_KEY=203.8.163.174, PingPeriod=0,
> UIL_PORT_KEY=8096, ClientILService=org.jboss.mq.il.uil.UILClientILService,
> UIL_TCPNODELAY_KEY=yes}]
> 2003-12-17 14:54:13,974 DEBUG [org.jboss.mq.Connection] Setting the
> clockDaemon's thread factory
> 2003-12-17 14:54:14,024 DEBUG
> [org.jboss.mq.GenericConnectionFactory] Handing out ClientIL:
> org.jboss.mq.il.uil.UILClientILService
> 2003-12-17 14:54:14,024 DEBUG
> [org.jboss.mq.il.uil.UILClientILService] UILClientILService.run()
> 2003-12-17 14:54:14,134 DEBUG
> [org.jboss.mq.referenceable.SpyDestinationObjectFactory]
> SpyDestinationObjectFactory->getObjectInstance()
>
> It seems Log4J is being used for JBoss client classes but not for my own.
> What am I doing wrong here? I have also checked to ensure that
> ${CATALINA_HOME}/common/lib does not contain any logging-related JARs
> except
> for commons-logging-api.jar. Similarly, I have made sure that my web app
> does not contain any logging-related JARs except for log4j-1.2.8.jar.
>
> Sorry for the long post and thanks for even reading this far. I'd
> appreciate
> any help anyone can offer.
>
> Thanks,
> Kent
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]