Did you make any progress with this?  Did you try deploying the Log4j 2 jars 
only to the Tomcat directory?

Ralph

On Jan 21, 2013, at 11:11 AM, Scott Severtson wrote:

> FYI, I'm planning on setting up a simple test web application and Tomcat 
> configuration to investigate the problems we're currently seeing, but may not 
> get to it until later this week. Hopefully the issues we're seeing are 
> reproducible and easy to address.
> 
> --Scott
> 
> On 01/17/2013 03:02 PM, Scott Severtson wrote:
>> All,
>> 
>> Hmmm... More experimentation has shown that this configuration does not have 
>> reliable results. Sometimes on startup, the application-specific messages 
>> end up in the Tomcat logs, but not in the application-specific logs. Other 
>> times, the messages are routed correctly.
>> 
>> Any thoughts? Is there some sort of configuration race condition going on?
>> 
>> --Scott
>> 
>> On 01/17/2013 09:33 AM, Scott Severtson wrote:
>>> Ralph,
>>> 
>>> So, based on your response, here's what we've come up with:
>>> * Log4J2 .jars deployed to Tomcat's CATALINA_BASE/lib directory
>>> * -Dlog4j.configurationFile=/path/to/tomcat-specific/log4j2.xml
>>> * Log4J2 .jars *also* deployed in web applications
>>> * web.xml context-param: 
>>> log4jConfiguration=${log4j.application.configurationFile}
>>> * web.xml listener Log4jContextListener
>>> * 
>>> -Dlog4j.application.configurationFile=/path/to/application-specific/log4j2.xml
>>> 
>>> This works, for the most part. The application-specific log events are sent 
>>> to the appropriate application-specific appenders, and Tomcat log events 
>>> are sent to the Tomcat-specific appenders.
>>> 
>>> However, we have one problem: Application-specific log events are *also* 
>>> appended to the Tomcat root logger.
>>> 
>>> Do I need to add entries to the tomcat-specific configuration to *exclude* 
>>> application specific events? I was under the impression that the 
>>> ClassLoaderContextSelector and using Log4jContextListener would prevent 
>>> events from being sent between the two contexts.
>>> 
>>> For what it's worth, our applications do not currently specify a 
>>> display-name in web.xml, which according to the docs, would result in 
>>> ServletContext.getServletContextName() returning null. Also, no 
>>> context-param is configured for log4jContextName. However, based on my 
>>> reading of the Log4J2 code, the context name is not actually used by 
>>> Configurator or ConfigurationFactory, so I assumed the null name would not 
>>> matter.
>>> 
>>> Many thanks for any hints in the right direction,
>>> --Scott
>>> 
>>> On 01/10/2013 12:27 PM, Ralph Goers wrote:
>>>> LOG4J2-18 and LOG4J2-42 have been sitting for quite some time waiting for 
>>>> someone like yourself to come along and help come up with good approaches.
>>>> 
>>>> I think most of the tools are there but I'm not sure what the best way(s) 
>>>> is/are to finish it off.
>>>> 
>>>> First, hopefully you are aware that the default ContextSelector is the 
>>>> ClassLoaderContextSelector. If you place your Log4j 2 jars in the tomcat 
>>>> class loader then Tomcat's logging will use the Logging Context associated 
>>>> with Tomcat's class loader. That would need to use log4j2.xml or the 
>>>> system property - unless something can be added to Tomcat startup that 
>>>> causes it to use a different configuration file via the Configurator.  All 
>>>> the web applications will have their own logging contexts that is 
>>>> associated with their class loader. If you use the Log4jContextListener in 
>>>> the web project and can configure each web apps web.xml then you can cause 
>>>> each web app to have their own configuration or you can set them to all 
>>>> use the same one. I suppose we could also modify the context listener to 
>>>> look for a system property to automatically cause all the web apps to 
>>>> share a configuration.
>>>> 
>>>> With the BasicContextSelector everything uses a single LoggerContext so 
>>>> that probably isn't what you want.
>>>> 
>>>> With the JNDIContextSelector each web app does a JNDI lookup to locate its 
>>>> LoggerContext. Again, you would need to configure each web app with the 
>>>> location of the configuration file.
>>>> 
>>>> I'm open to suggestions on how to better handle this.
>>>> 
>>>> Ralph
>>>> 
>>>> 
>>>> On Jan 10, 2013, at 8:56 AM, Scott Severtson wrote:
>>>> 
>>>>> All,
>>>>> 
>>>>> We'd like to replace Tomcat's built-in logging with Log4J2, and are able 
>>>>> to do so based on Tomcat's docs for using Log4J 1.x, and deploying the 
>>>>> log4j-1.2-api-2.0-beta4.jar shim.
>>>>> 
>>>>> However, we're running into an issue with external configuration...
>>>>> 
>>>>> Our webapps are always deployed with external logging configuration 
>>>>> files. Historically, we've used 
>>>>> -Dlog4j.configuration=/path/to/log4j.properties (now 
>>>>> -Dlog4j.configurationFile=/path/to/log4j2.xml) to point the app to the 
>>>>> correct file.
>>>>> 
>>>>> Unfortunately, if we pass the app-specific config file to the Tomcat JVM, 
>>>>> the Tomcat-level Log4J2 instance *also* tries to that config file.
>>>>> 
>>>>> Is there a reasonable way to support externalized configuration files 
>>>>> both for the Tomcat-level Log4J2 instance, *and* app-specific external 
>>>>> configuration files as well?
>>>>> 
>>>>> Many thanks,
>>>>> --Scott
>>>>> 
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
>>>>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
>>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
>>>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
>>>> 
>>> 
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to