Add -log4j.debug to the command to start Tomcat (CATALINA_OPTS).  That
will cause log4j to print to standard out info about the config and
will tell you if log4j finds the config file, etc.
Also, are you sure that your servlet finds everything?  I would add
system output to it to make sure that everything happens as thought.

On 12/20/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Unfortunately, it is still not logging my debug statements. I took your advice
and also read through some documents and created a log4j initialization servlet.
Here is the code and results:
#
# COmmon Logging servlet that starts once
#
public class CommonLogging extends HttpServlet {

        public void init() {
                String prefix =  getServletContext().getRealPath("/");
                String file = getInitParameter("log4j-init-file");
                if(file != null) {
                        PropertyConfigurator.configure(prefix+file);
                }
        }

        public void doGet(HttpServletRequest req, HttpServletResponse res) {}

        public void doPost(HttpServletRequest req, HttpServletResponse res) {}
}

#
# In web.xml
#

<servlet>
    <servlet-name>log4j-init</servlet-name>
    <servlet-class>com.foo.CommonLogging</servlet-class>

    <init-param>
      <param-name>log4j-init-file</param-name>
      <param-value>WEB-INF/classes/log4j.lcf</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

#
# log4j.lcf in WEB-INF/classes
#
log4j.rootCategory=DEBUG, A2
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.file=logs/tomcat.log
log4j.appender.A2.datePattern='.'yyyy-MM-dd
log4j.appender.A2.append=true
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%-5p %d{ISO8601} [%t] - %m%n

#
# TestServlet
#
public class TestServlet extends HttpServlet {
       private static Logger logger =
Logger.getLogger(GenerateChartServlet.class.getName());

       public TestServlet() {
       }

       private void doPost(HttpServletRequest req, HttpServletResponse res)
               throws IOException, ServletException
       {
               ...
                // This never gets outputted to log file
               logger.debug("TestServlet: Debbuging");
                ...
       }
}

#
# Output from tomcat.log
#
Dec 20, 2006 1:55:43 PM org.apache.catalina.core.AprLifecycleListener
lifecycleEvent
Dec 20, 2006 1:55:43 PM org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-80
Dec 20, 2006 1:55:43 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 751 ms
Dec 20, 2006 1:55:44 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Dec 20, 2006 1:55:44 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.20
Dec 20, 2006 1:55:44 PM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
log4j:WARN No appenders could be found for logger
(org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
DEBUG JspRuntimeContext               - Parent class loader is:
WebappClassLoader
  delegate: false
  repositories:
    /WEB-INF/classes/
----------> Parent Classloader:
[EMAIL PROTECTED]
DEBUG JspServlet                      - Scratch dir for the JSP engine is:
DEBUG JspServlet                      - IMPORTANT: Do not modify the generated
servlets
Dec 20, 2006 1:55:45 PM org.apache.catalina.core.ApplicationContext log
INFO: 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]]
Dec 20, 2006 1:55:45 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Dec 20, 2006 1:55:45 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Dec 20, 2006 1:55:45 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
Dec 20, 2006 1:55:45 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
Dec 20, 2006 1:55:46 PM org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-80
Dec 20, 2006 1:55:46 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Dec 20, 2006 1:55:46 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/27  config=null
Dec 20, 2006 1:55:46 PM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
Dec 20, 2006 1:55:46 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2322 ms
DEBUG ManagerBase                     - Start expire sessions StandardManager at
1166641005968 sessioncount 0
DEBUG ManagerBase                     - End expire sessions StandardManager
processingTime 0 expired sessions: 0

Any ideas? Thanks so much for your help!!

Quoting Jacob Kjome <[EMAIL PROTECTED]>:

>
> 1.  Don't configure from the servlet.  Either let Log4j autoconfigure
> itself by finding log4j.properties or log4j.xml in the classpath or
> configure from a class that's guaranteed to be called once (or has
> methods that are guaranteed to be called once) such as a servlet
> context listener.
>
> 2.  Where do you expect Log4j to find log4j.properties?  I bet you
> didn't expect that it would look in the directory from which the JVM
> started.  The String version of the method takes a file path.  If you
> give it a relative one, it will look relative to the directory from
> the JVM started.  If you started Tomcat from it's script, it's
> looking in CATALINA_HOME/bin for the properties file.  Avoid using a
> File.  If you configure yourself, use a URL.  You can load up a
> resource from the classloader as a URL and pass that to the
> configurator.   I would avoid configuring yourself unless you have a
> really good reason to do it, though.
>
> 3.  From the looks of it, you have Log4j in common/lib or shared/lib,
> right?  You should avoid this too unless you know what you are
> doing.  All your app that share this log4j.jar will log to the same
> logger repository.  And each time you reconfigure an app, you
> reconfigure *all* apps.  Do yourself a favor and put log4j.jar in
> WEB-INF/lib of each app you use and put the config file in
> WEB-INF/classes.  Let Log4j autoconfigure itself and you will be golden.
>
>
> Jake
>
> At 09:33 PM 12/19/2006, you wrote:
>  >I am trying to use log4j in my application under Tomcat 5.5. However, it is
>  >producing mounds of debugging information but none of it lists the items I
>  >specify. Here is a portion of my application, the config file, and
> a portion of
>  >the output. Please note that logger.debug("TestServlet: Debugging) never
> gets
>  >printed in the log file even though the function gets called!
>  >
>  >// TestServlet
>  >public class TestServlet extends HttpServlet {
>  >       private static Logger logger =
>  >Logger.getLogger(GenerateChartServlet.class.getName());
>  >
>  >       public TestServlet() {
>  >               PropertyConfigurator.configure("log4j.properties");
>  >       }
>  >
>  >       private void doPost(HttpServletRequest req, HttpServletResponse res)
>  >               throws IOException, ServletException
>  >       {
>  >               ...
>  >                // This never gets outputted to log file
>  >               logger.debug("TestServlet: Debbuging");
>  >                ...
>  >       }
>  >}
>  >
>  >#
>  ># Log4j configuration file.
>  >#
>  >log4j.rootCategory=DEBUG, A2
>  >
>  ># Available levels are DEBUG, INFO, WARN, ERROR, FATAL
>  >#
>  >#
>  ># A2 is a DailyRollingFileAppender
>  >#
>  >
>  >log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
>  >log4j.appender.A2.file=logs/tomcat.log
>  >log4j.appender.A2.datePattern='.'yyyy-MM-dd
>  >log4j.appender.A2.append=true
>  >log4j.appender.A2.layout=org.apache.log4j.PatternLayout
>  >log4j.appender.A2.layout.ConversionPattern=%-5p %d{ISO8601} [%t] - %m%n
>  >
>  >#
>  >#OUTPUT
>  >#
>  >DEBUG 2006-12-19 22:08:11,593 [main] -   bodyText=''
>  >DEBUG 2006-12-19 22:08:11,593 [main] -   Fire body() for
>  >ObjectCreateRule[className=org.apache.catalina.deploy.ContextResource,
>  >attributeName=null]
>  >DEBUG 2006-12-19 22:08:11,593 [main] -   Fire body() for
>  >SetNextRule[methodName=addResource,
>  >paramType=org.apache.catalina.deploy.ContextResource]
>  >DEBUG 2006-12-19 22:08:11,593 [main] -   Popping body text ''
>  >DEBUG 2006-12-19 22:08:11,593 [main] -   Fire end() for
>  >SetNextRule[methodName=addResource,
>  >paramType=org.apache.catalina.deploy.ContextResource]
>  >DEBUG 2006-12-19 22:08:11,593 [main] -   Fire end() for
>  >ObjectCreateRule[className=org.apache.catalina.deploy.ContextResource,
>  >attributeName=null]
>  >DEBUG 2006-12-19 22:08:11,593 [main] -
> [ObjectCreateRule]{web-app/resource-ref}
>  >Pop org.apache.catalina.deploy.ContextResource
>  >DEBUG 2006-12-19 22:08:11,593 [main] - ignorableWhitespace(
>  >
>  >)
>  >DEBUG 2006-12-19 22:08:11,594 [main] - endElement(,,web-app)
>  >DEBUG 2006-12-19 22:08:11,594 [main] -   match='web-app'
>  >DEBUG 2006-12-19 22:08:11,594 [main] -   bodyText=''
>  >DEBUG 2006-12-19 22:08:11,594 [main] -   Fire body() for
>  >[EMAIL PROTECTED]
>  >DEBUG 2006-12-19 22:08:11,594 [main] -   Popping body text ''
>  >DEBUG 2006-12-19 22:08:11,594 [main] -   Fire end() for
>  >[EMAIL PROTECTED]
>  >DEBUG 2006-12-19 22:08:11,594 [main] - endDocument()
>  >DEBUG 2006-12-19 22:08:11,628 [main] - Opening /dev/urandom
>  >DEBUG 2006-12-19 22:08:11,628 [main] - Registering
>  >Catalina:type=Manager,path=/ftrade/graph,host=localhost
>  >DEBUG 2006-12-19 22:08:11,628 [main] - Force random number initialization
>  >starting
>  >DEBUG 2006-12-19 22:08:11,628 [main] - Getting message digest component for
>  >algorithm MD5
>  >DEBUG 2006-12-19 22:08:11,628 [main] - Completed getting message digest
>  >component
>  >DEBUG 2006-12-19 22:08:11,628 [main] - getDigest() 0
>  >DEBUG 2006-12-19 22:08:11,628 [main] - Force random number initialization
>  >completed
>  >DEBUG 2006-12-19 22:08:11,628 [main] - Start: Loading persisted sessions
>  >DEBUG 2006-12-19 22:08:11,628 [main] - Loading persisted sessions from
>  >SESSIONS.ser
>  >DEBUG 2006-12-19 22:08:11,628 [main] - No persisted data file found
>  >DEBUG 2006-12-19 22:08:11,628 [main] - Sending application start events
>  >DEBUG 2006-12-19 22:08:11,628 [main] - Starting filters
>  >DEBUG 2006-12-19 22:08:11,629 [main] - Parent class loader is:
>  >WebappClassLoader
>  >..
>  >..
>  >
>  >---------------------------------------------------------------------
>  >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]
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
James Stauffer        http://www.geocities.com/stauffer_james/
Are you good? Take the test at http://www.livingwaters.com/good/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to