views:

1920

answers:

3

I have a peculiar problem with Log4j. We are deploying on Weblogic 10 using log4j.xml. That works fine. We figured a way to run Tomcat 6 in such a way that we can develop on this platform and deploy on Weblogic 10.

I have figured out how to make log4j.properies work with Tomcat 6 with additional JArs that use the JULI logging mechanism in Tomcat 6. Unfortunately, my log4j.xml (that works with Weblogic) fails to work with Tomcat 6. So I am forced to use log4j.properties.

I have not been able to figure out how to indicate application class hierarchies in log4j.properties. So my question is how does on convert the following log4j.xml entries to log4j.properties

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"&gt;

<appender name="vccashib" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="DatePattern" value="'.'yyyy-MM-dd"/>
    <param name="File" value="vccashib_10.log"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{ISO8601} %t %-5p %c - %m%n"/>
    </layout>
  </appender>

  <logger name="org.hibernate">
    <level value="DEBUG"/>
    <appender-ref ref="vccashib" />
  </logger>

</log4j:configuration>

So let us say I was to write a logger that captures logs for classes in my com.abc.xyz hierarchy. How do I indicate that in log4j.properties? (I have taken care of a other values, such as type of appenders, DatePattern, ConversionPattern, FileName, layout etc.)

Please note, I have sent you the only problem-specific code.

Alternatively, if you know the answer on how to make log4j.xml that is part of my war archive with Tomcat 6 (JULI jars are in place and work well with log4j.properties), please let me know

Please help.

Suhaas

+1  A: 

I'm not entirely clear on your question. I've deployed log4j on tomcat 6 with no problems (can you post the specific problems you're having with your xml config?. I'm not sure what you mean by "I have figured out how to make log4j.properies work with Tomcat 6 with additional JArs that use the JULI logging mechanism in Tomcat 6").

  • is the config in the proper location?

  • are some of your jars being loaded from the global tomcat (TOMCAT_HOME/lib) directory? If so the library might be looking for the config from the global directory, rather than from your webapp.

If you're just talking about how to manage separate class hierarchies in your log4j config, it's something like :

log4j.rootCategory=INFO,stdout

#e.g. not interested in most stripes or spring warnings
log4j.logger.net.sourceforge.stripes=ERROR
log4j.logger.org.springframework=ERROR

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d %-5p [%t] %c{1} %3x - 
%m%n

#This creates the separate log "Foo" at DEBUG level. Everythign within 
#the "com.foo" package will
# get logged here
log4j.category.com.foo=DEBUG,Foo
log4j.appender.Foo=org.apache.log4j.RollingFileAppender
log4j.appender.Foo.layout=org.apache.log4j.PatternLayout
log4j.appender.Foo.layout.ConversionPattern=%-d %-5p [%t] %c{1} %3x - %m%n
log4j.appender.DetailLogFile.File=foo.log
#this is the important line - if this isn't here the stuff in
#com.foo package will show up in both logs.
log4j.additivity.com.foo=false
Steve B.
A: 

Hi,

We are using tomcat6 with log4j. We followed the following manual to install log4j in the tomcat - it is more complicated than on the old versions (4.1-5.5). I believe you should put your log4j.xml under the WEB-INF/classes directory in your war.

Ad additional approach is to use the spring framework for this - see Log4jConfigListener's API

David Rabinowitz
A: 

IT appears to me that there was no problem with creation of logs even with log4j.xml

I did use http://tomcat.apache.org/tomcat-6.0-doc/logging.html to create logging mechanism as suggested.

Interestingly the logs were being created in the bin directory of Tomcat 6 !!! It is something to do with the current working directory and in my case it seems to be the bin directory as per some Catalina setting