Is log4j.jar in your WEB-INF/lib? Don't set log4j.configuration unless you have
to. And if you set it, make sure it exists where you specify. When you use
log4j.configuration, File IO will be used to load it. And if you specify a
relative path to it, then it will look for it relative to where the JVM
started. For instance, if you are running Tomcat from the batch file in
CATALINA_HOME/bin, the VM will have been started from CATALINA_HOME/bin so
Log4j would look for the properties file at CATALINA_HOME/bin/log4j.properties.
If you run Tomcat as a service and haven't changed the base directory location
that the VM starts from, it will start from c:\winnt\System32. So, if you have
-Dlog4j.configuration=log4j.properties, then it will look for the file at
c:\winnt\System32\log4j.properties. Make sense?
The solution here is to not set log4j.configuration. Log4j will pick it up
from the classpath anyway. You don't need to go to any extra effort for this.
And, as you've found, your extra effort is simply causing you problems.
BTW, if log4j.jar is *not* in your webapp, but in CATALINA_HOME/common/lib, put
log4j.properties in CATALINA_HOME/common/classes. Don't forget to add
commons-logging.jar to common/lib as well since Tomcat needs it.
Jake
Quoting Brian McGovern <[EMAIL PROTECTED]>:
> Currently in myapp\WEB-INF\classes\
>
> And being pointed to by system variable log4j.configuration
> ------------------------------------------------------------------------------
> log4j.rootLogger=DEBUG, nycbbuilderlog
> log4j.appender.nycbbuilderlog=org.apache.log4j.RollingFileAppender
> log4j.appender.nycbbuilderlog.File=${catalina.home}/logs/catalina.out
> log4j.appender.nycbbuilderlog.MaxFileSize=10000KB
> log4j.appender.nycbbuilderlog.MaxBackupIndex=2
> log4j.appender.nycbbuilderlog.layout=org.apache.log4j.PatternLayout
> log4j.appender.nycbbuilderlog.layout.ConversionPattern=%5p
> [EMAIL PROTECTED]:mm:ss,SSS}] - %m%n
>
-------------------------------------------------------------------------------
>
> -----Original Message-----
> From: Norma Spence [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, February 22, 2005 11:52 AM
> To: Log4J Users List
> Subject: RE: log4j.properties not found.
>
>
> Could you post the contents of your properties file?
>
> -----Original Message-----
> From: Brian McGovern [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, February 22, 2005 11:53 AM
> To: Log4J Users List
> Subject: RE: log4j.properties not found.
>
>
> I'm not. Any other ideas?
>
> -----Original Message-----
> From: Norma Spence [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, February 22, 2005 11:49 AM
> To: Log4J Users List
> Subject: RE: log4j.properties not found.
>
>
> If you are also getting a strange message at tomcat console when you first
> start Tomcat, make sure that the .properties file is not in the classpath and
> or the commons folder subdirectories.
> best,
> norma
>
>
> -----Original Message-----
> From: Brian McGovern [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, February 22, 2005 11:46 AM
> To: [email protected]
> Subject: log4j.properties not found.
>
>
> I have a problem that may be easy to resolve and if not, may make me not use
> log4j anymore. Heres whats going on. I have an app that logs with log4j
> perfectly. I have a log4j.properties file in my WEB-INF\classes directory
> and instantiate the logger like this.
>
> private static final Logger zLogger =
> Logger.getLogger(RepsMainController.class);
> zLogger.debug("something logged here");
>
> However when I run any servlet, in catalina.out i get the following error:
>
> log4j:ERROR Could not read configuration file [log4j.properties].
> java.io.FileNotFoundException: log4j.properties (The system cannot find the
> file specified)
> at java.io.FileInputStream.open(Native Method)
> at java.io.FileInputStream.<init>(Unknown Source)
> at java.io.FileInputStream.<init>(Unknown Source)
> at
>
org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
> at
> org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
> at
>
com.imediainc.nycballet.nycbbuilder.dataaccess.DBConnection.getConnection(Unknown
> Source)
> at
> com.imediainc.nycballet.nycbbuilder.dataaccess.NYCBData.getAllReps(Unknown
> Source)
> at
> com.imediainc.nycballet.nycbbuilder.control.RepsMainController.execute(Unknown
> Source)
> at
>
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
> at
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
> at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
> at
> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
> at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
> at
>
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
> at
>
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
> at
>
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
> at
>
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
> at
> org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:670)
> at
> org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:637)
> at org.apache.jsp.reps.index_jsp._jspService(index_jsp.java:43)
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at
>
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
> at
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
> at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
> at
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
> at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
>
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
> at
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
> at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
> at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
> at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at
>
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
> at
>
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
> at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
> at
>
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
> at java.lang.Thread.run(Unknown Source)
> log4j:ERROR Ignoring configuration file [log4j.properties].
> AbandonedObjectPool is used
> ([EMAIL PROTECTED])
> LogAbandoned: true
> RemoveAbandoned: true
> RemoveAbandonedTimeout: 60
>
>
> I can fix this error by adding an system wide environment variable called
> log4j.configuration in bin/startup.sh.
>
>
> My problem is this: Why do I have to declare log4j.configuration and point
> it to an APP SPECIFIC properties file. What if I wanted more than 1 app but
> not all to use log4j? Either I'm doing something wrong (very likely) or
> log4j has a flaw in design (highly unlikely). Can anyone explain what my
> problem is?
>
> Thanks
> -B
>
>
>
>
> ---------------------------------------------------------------------
> 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]
>
>
> ---------------------------------------------------------------------
> 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]