I don't think it's possible to do this in configuration. In the sharedLib code, 
you can obtain Loggers by calling LogManager.getContext(true).getLogger(). 

I think that will force the specified Logger to live in a separate context from 
your application. I wouldn't like hard-coding this in my library though...

Your current solution allows most flexibility imho. 

Remko

Sent from my iPhone

> On 2016/07/26, at 3:56, Bill Okara <billok...@gmail.com> wrote:
> 
> Hi Remko,
> 
> thanks for the suggestion, that's actually what I am doing currently.
> That is, listing the various class packages in the shared libs to be
> logged to a common log file.
> 
> But was trying to see if there's some more robust way to do that,
> something like (maybe) specify/config which loggerContext the
> parentClassloader should be assigned to?
> 
> A common use case for that is, usually the JNDI resources will be put
> in the container shared lib dir (as per tomcat's instruction), so
> would be good if can config the container shared lib classloader
> (parent of the webapp classloader) to use a logger context other than
> the webapp logger context.
> 
> Comment?
> 
> 
> Thanks!
> William
> 
> 
>> On Mon, Jul 25, 2016 at 8:21 AM, Remko Popma <remko.po...@gmail.com> wrote:
>> There may be other ways to do this, but if the classes in the sharedLib are
>> in a specific package, you could configure the log4j2.xml configurations
>> for both web apps to create a separate appender (and a separate log file)
>> for the loggers for that package.
>> 
>> Remko
>> 
>>> On Sat, Jul 23, 2016 at 3:18 AM, Bill Okara <billok...@gmail.com> wrote:
>>> 
>>> Hi,
>>> 
>>> Following is my deployment env:
>>> 
>>> tomcat7
>>>    |- lib/sharedLib12.jar   // shared lib  used by webapp1 and webapp2
>>>    |- lib/slf4j-api-1.7.7.jar, log4j-api-2.3.jar, log4j-core-2.3.jar,
>>> log4j-slf4j-impl-2.3.jar
>>>    |
>>>    |- webapps
>>>         |-webapp1/WEB-INF/classes/log4j2.xml
>>>         |                                 lib/log4j-web-2.3.jar
>>>         |-webapp2/WEB-INF/classes/log4j2.xml
>>>         |                                 lib/log4j-web-2.3.jar
>>> 
>>> 
>>> With servlet 3.0+ and default ClassLoaderContextSelector, it was
>>> quite simple (awesome!) to config so that log output from each webapp
>>> will be sent to it's own log file (webapp1.log, webapp2.log)
>>> 
>>> But the problem is that log output from the sharedLib jar will always
>>> goto to the first loaded webapp, because:
>>> ----------> Parent Classloader:
>>> org.apache.catalina.loader.StandardClassLoader@59717824
>>> 
>>> the parent classloader (the one sharedLib is loaded) will be assigned
>>> to the loggerContext of the first loaded webapp (which kinda makes
>>> sense).
>>> 
>>> 
>>> Question:
>>> is there a way to config so that jars inside the tomcat/lib can be
>>> logged to a common/separate logger context (or log file) that is
>>> independent of the loaded webapp? (without configure tomcat to use
>>> log4j2 as internal logger?)
>>> 
>>> 
>>> Thanks!
>>> Bill
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> For additional commands, e-mail: log4j-user-h...@logging.apache.org
> 

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

Reply via email to