logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jacob Kjome" <h...@visi.com>
Subject Re: log4j.properties gets loaded twice causing rollling to fail
Date Sun, 13 Jul 2014 04:24:02 GMT

Because Log4j, by default, looks for config files in the default package.  
Furthermore, because of Tomcat's child-first classloading behavior, if you 
place log4j.properties in the default package of the webapp (WEB-INF/classes) 
it won't bother looking in the parent classloader since it will have already 
found the config file in the webapp classloader.

Note, however, that log4j.xml takes precedence over log4j.properties.  So, if 
you have log4j.xml in Tomcat's classpath (in the default package), then even 
if you have log4j.properties in the webapp classpath, it will use log4j.xml 
from the server classpath.  If that case, you'd need log4j.xml in the webapp's 
default package to override the server's log4j.xml.  Just thought I'd point 
that out.


Jake

On Sun, 13 Jul 2014 00:04:26 +0800
 Gerald <geraldlsg@yahoo.com.sg> wrote:
> Hi 
> 
> Could I trouble you to explain further why putting the application 
>log4j.properties in WEB-INF/classes, as opposed to 
>WEB-INF/classes/properties, would prevent the webapp classloader from seeing 
>the tomcat's log4j.properties?
> 
> Gerald
> 
>> On 11 Jul, 2014, at 11:27 pm, "Jacob Kjome" <hoju@visi.com> wrote:
>> 
>> 
>> Why don't you place your webapp's log4j.properties file in WEB-INF/classes 
>>instead of WEB-INF/classes/properties?  That way, the webapp classloader 
>>won't ever see the tomcat log4j.properties, thus no rolling file appender 
>>conflicts.
>> 
>> Jake
>> 
>> On Fri, 11 Jul 2014 11:16:41 +0800
>>  guowei <geraldlsg@yahoo.com.sg> wrote:
>>> Dear all,
>>> I am using log4j for tomcat internal logging and also application logging.
>>> I followed Tomcat's instruction to configure log4j rolling and I also have 
>>>configured my application to have its own log4j rolling.
>>> log4j.jar is in both Tomcat's lib and web application's lib, each have their

>>>respective log4j.properties
>>> I enabled -Dlog4j.debug and I can see the sequence of the events
>>> 1) log4j.properties for the tomcat gets loaded by Tomcat's 
>>>StandardClassLoader
>>> 2) the same log4j.properties for tomcat gets loaded by the Tomcat's 
>>>WebappClassLoader
>>> 3) application's log4j.properties is loaded
>>> Between 1) and 2) I can see the tomcat files being rolled ( I intentionally 
>>>set DailyRollingAppender to yyyy-MM-dd-HH-mm and DEBUG level to make sure 
>>>lots of things gets logged). Rolling was working well. Files were rolled on 
>>>the minute
>>> However, when step 2) kicks in, the rolling of tomcat files failed. I reckon

>>>that the moment the the same log4j.properties is loaded, there is a conflict 
>>>since the same appenders are referred twice.
>>> I am not certain has it anything to do with the tomcat's log4j configuration

>>>or appliation's log4j configuration. The Application's log files are rolled 
>>>correctly.
>>> Would appreciate if anyone can enlighten me.
>>> -----Dlog4j.debug output----
>>> log4j: Trying to find [log4j.xml] using context classloader 
>>>org.apache.catalina.loader.StandardClassLoader@1529d183.
>>> log4j: Trying to find [log4j.xml] using 
>>>org.apache.catalina.loader.StandardClassLoader@1529d183 class loader.
>>> log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
>>> log4j: Trying to find [log4j.properties] using context classloader 
>>>org.apache.catalina.loader.StandardClassLoader@1529d183.
>>> log4j: Using URL [file:/C:\Apache\Tomcat/lib/log4j.properties] for automatic

>>>log4j configuration.
>>> log4j: Reading configuration from URL 
>>>file:/C:\Apache\Tomcat/lib/log4j.properties
>>> log4j: Parsing for [root] with 
>>>value=[WARN,CATALINA,LOCALHOST,MANAGER,HOST-MANAGER,stdout,stderr].
>>> log4j: Level token is [WARN].
>>> log4j: Category root set to WARN
>>> log4j: Parsing appender named "CATALINA".
>>> log4j: Parsing layout options for "CATALINA".
>>> log4j: Setting property [conversionPattern] to [%d [%t] %-5p %c- %m%n].
>>> log4j: End of parsing for "CATALINA".
>>> log4j: Setting property [encoding] to [UTF-8].
>>> log4j: Setting property [datePattern] to ['.'yyyy-MM-dd-HH-mm'.log'].
>>> log4j: Setting property [file] to [C:\Apache\Tomcat/logs/catalina].
>>> log4j: Setting property [append] to [true].
>>> log4j: setFile called: C:\Apache\Tomcat/logs/catalina, true
>>> log4j: setFile ended
>>> log4j: Appender [CATALINA] to be rolled on top of every minute.
>>> log4j: Parsed "CATALINA" options.
>>> log4j: Handling 
>>>log4j.additivity.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=[null]
>>> log4j: Finished configuring.
>>> .
>>> .
>>> #Parsing for rest of the file
>>> .
>>> .
>>> log4j: Parsing for 
>>>[org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[host-manager]]

>>>with value=[WARN, HOST-MANAGER].
>>> log4j: Level token is [WARN].
>>> log4j: Category 
>>>org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[host-manager] 
>>>set to WARN
>>> log4j: Parsing appender named "HOST-MANAGER".
>>> delegate: false
>>>   repositories:
>>>     /WEB-INF/classes/
>>> ----------> Parent Classloader:
>>> org.apache.catalina.loader.StandardClassLoader@6c79fa4f
>>> .
>>> log4j: Trying to find [log4j.xml] using WebappClassLoader
>>>   context: /mya
>>>   delegate: false
>>>   repositories:
>>>     /WEB-INF/classes/
>>> ----------> Parent Classloader:
>>> org.apache.catalina.loader.StandardClassLoader@6c79fa4f
>>> class loader.
>>> log4j: Trying to find [log4j.xml] using ClassLoader.getSystemResource().
>>> log4j: Trying to find [log4j.properties] using context classloader 
>>>WebappClassLoader
>>>   context: /mya
>>>   delegate: false
>>>   repositories:
>>>     /WEB-INF/classes/
>>> ----------> Parent Classloader:
>>> org.apache.catalina.loader.StandardClassLoader@6c79fa4f
>>> .
>>> log4j: Using URL [file://C:\Apache\Tomcat/lib/log4j.properties] for 
>>>automatic log4j configuration.
>>> log4j: Using URL [file:/C:\Apache\Tomcat/lib/log4j.properties] for automatic

>>>log4j configuration.
>>> log4j: log4j: Parsing for [root] with 
>>>value=[WARN,CATALINA,LOCALHOST,MANAGER,HOST-MANAGER,stdout,stderr].
>>> log4j: Level token is [WARN].
>>> Reading configuration from URL file:/C:\Apache\Tomcat/lib/log4j.properties
>>> log4j: Category root set to WARN
>>> log4j: Parsing appender named "CATALINA".
>>> log4j: Parsing layout options for "CATALINA".
>>> log4j: Setting property [conversionPattern] to [%d [%t] %-5p %c- %m%n].
>>> log4j: End of parsing for "CATALINA".
>>> log4j: Setting property [encoding] to [UTF-8].
>>> log4j: Setting property [datePattern] to ['.'yyyy-MM-dd-HH-mm'.log'].
>>> log4j: Setting property [file] to [C:\Apache\Tomcat/logs/catalina].
>>> log4j: Setting property [append] to [true].
>>> log4j: setFile called: C:\Apache\Tomcat/logs/catalina, true
>>> log4j: setFile ended
>>> log4j: Appender [CATALINA] to be rolled on top of every minute.
>>> log4j: Parsed "CATALINA" options.
>>> log4j: Handling 
>>>log4j.additivity.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=[null]
>>> log4j: Finished configuring.
>>> .
>>> .
>>> #Parsing for rest of the appenders
>>> .
>>> .
>>> log4j: Parsing for 
>>>[org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[host-manager]]

>>>with value=[WARN, HOST-MANAGER].
>>> log4j: Level token is [WARN].
>>> log4j: Category 
>>>org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[host-manager] 
>>>set to WARN
>>> log4j: Parsing appender named "HOST-MANAGER".
>>> .
>>> .
>>> .
>>> log4j: Reading configuration from URL 
>>>file:/C:\Apache\Tomcat/webapps/mya/WEB-INF/classes/properties/log4j.properties
>>> log4j: Parsing for [org] with value=[INFO, DA, stdout].
>>> log4j: Level token is [INFO].
>>> log4j: Category org set to INFO
>>> log4j: Parsing appender named "DA".
>>> log4j: Parsing layout options for "DA".
>>> log4j: Setting property [conversionPattern] to [%-5p [%t] [%X{userID}] 
>>>%d{dd-MM-yyyy HH:mm:ss:SSS} [%30c{1}] - %m  %n].
>>> log4j: End of parsing for "DA".
>>> log4j: Setting property [append] to [true].
>>> log4j: Setting property [file] to [C:\Apache\Tomcat/logs/mya.log].
>>> log4j: Setting property [datePattern] to ['.'yyyy-MM-dd-HH].
>>> log4j: setFile called: C:\Apache\Tomcat/logs/mya.log, true
>>> log4j: setFile ended
>>> log4j: Appender [DA] to be rolled on top of every hour.
>>> log4j: Parsed "DA" options.
>>> log4j: Parsing appender named "stdout".
>>> log4j: Parsing layout options for "stdout".
>>> log4j: Setting property [conversionPattern] to [%-5p [%t] [%X{userID}] 
>>>%d{dd-MM-yyyy HH:mm:ss:SSS} [%30c{1}] - %m  %n].
>>> log4j: End of parsing for "stdout".
>>> log4j: Parsed "stdout" options.
>>> log4j: Handling log4j.additivity.org=[null]
>>> .
>>> .
>>> .
>>> #parsing of the application's log4j
>>> .
>>> .
>>> .
>>> log4j:ERROR Failed to rename [C:\Apache\Tomcat/logs/catalina] to 
>>>[C:\Apache\Tomcat/logs/catalina.2014-07-10-17-09-20.log].
>>> log4j:ERROR Failed to rename [C:\Apache\Tomcat/logs/localhost] to 
>>>[C:\Apache\Tomcat/logs/localhost.2014-07-10-17-09-20.log].
>>> log4j:ERROR Failed to rename [C:\Apache\Tomcat/logs/manager] to 
>>>[C:\Apache\Tomcat/logs/manager.2014-07-10-17-09-20.log].
>>> log4j:ERROR Failed to rename [C:\Apache\Tomcat/logs/host-manager] to 
>>>[C:\Apache\Tomcat/logs/host-manager.2014-07-10-17-09-20.log].
>>> log4j:ERROR Failed to rename [C:\Apache\Tomcat/logs/stdout] to 
>>>[C:\Apache\Tomcat/logs/stdout.2014-07-10-17-09-20.log].
>>> log4j:ERROR Failed to rename [C:\Apache\Tomcat/logs/stderr] to 
>>>[C:\Apache\Tomcat/logs/stderr.2014-07-10-17-09-20.log].
>>> ----------------------------------
>>> ----tomcat log4j properties----
>>> log4j.rootLogger=INFO,CATALINA,LOCALHOST,MANAGER,HOST-MANAGER,stdout,stderr
>>> # Define all the appenders
>>> log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
>>> log4j.appender.CATALINA.File=${catalina.base}/logs/catalina
>>> log4j.appender.CATALINA.Append=true
>>> log4j.appender.CATALINA.Encoding=UTF-8
>>> log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd-HH-mm'.log'
>>> log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
>>> log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
>>> .
>>> .
>>> .
>>> log4j.appender.stdout=org.apache.log4j.DailyRollingFileAppender
>>> log4j.appender.stdout.File=${catalina.base}/logs/stdout
>>> log4j.appender.stdout.Append=true
>>> log4j.appender.stdout.Encoding=UTF-8
>>> log4j.appender.stdout.DatePattern = '.'yyyy-MM-dd-HH-mm'.log'
>>> log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
>>> log4j.appender.stdout.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
>>> # Configure which loggers log to which appenders
>>> log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG,

>>>CATALINA
>>> log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[\manager]=DEBUG,

>>>MANAGER
>>> log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[\host-manager]=DEBUG,

>>>HOST-MANAGER
>>> --------end tomcat log4j properties----
>>> ---my application's log4j---
>>> log4j.log.dir=${catalina.home}/logs
>>> #Application Log
>>> log4j.logger.ou.org.to=ALL, DA, stdout
>>> log4j.logger.aud=ALL,AudAppender, stdout
>>> log4j.logger.ou.org.to.osf.core.aop.MethodTrace=ALL, MethodTraceAppender, 
>>>stdout
>>> log4j.logger.ou.org.to.osf.core.aop.PerfMonitor=ALL, PerfAppender, stdout
>>> log4j.appender.stdout=org.apache.log4j.ConsoleAppender
>>> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
>>> log4j.appender.stdout.layout.ConversionPattern=%-5p [%t] [%X{userID}] 
>>>%d{dd-MM-yyyy HH:mm:ss:SSS} [%30c{1}] - %m  %n
>>> log4j.appender.DA=org.apache.log4j.DailyRollingFileAppender
>>> log4j.appender.DA.file=${log4j.log.dir}/mya.log
>>> log4j.appender.DA.layout=org.apache.log4j.PatternLayout
>>> log4j.appender.DA.layout.ConversionPattern=%-5p [%t] [%X{userID}] 
>>>%d{dd-MM-yyyy HH:mm:ss:SSS} [%30c{1}] - %m  %n
>>> log4j.appender.DA.DatePattern='.'yyyy-MM-dd-HH
>>> log4j.appender.DA.append=true
>>> --------------------------------------
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>For additional commands, e-mail: log4j-user-help@logging.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Mime
View raw message