[ 
https://issues.apache.org/jira/browse/LOG4J2-500?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13887867#comment-13887867
 ] 

Remko Popma commented on LOG4J2-500:
------------------------------------

This is not as straight-forward as I thought: it turns out that registering 
StatusLogger multiple times (once for each LoggerContext) impacts the GUI.

I haven't figured out yet if it really is the _same_ StatusLogger instance that 
is registered multiple times, or whether multiple webapps (by having different 
classloaders) actually have _different_ StatusLogger instances. And just to 
make it extra fun, perhaps both are possible, depending on whether the log4j2 
jar files are in the web container lib folder (and shared between web 
applications) or bundled with the web application (in WEB-INF/lib)...

If multiple StatusLoggers are possible then the GUI needs to show separate text 
areas for each StatusLogger.

> Unloading one webapp unloads JMX MBeans for all webapps
> -------------------------------------------------------
>
>                 Key: LOG4J2-500
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-500
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: JMX
>    Affects Versions: 2.0-rc1
>            Reporter: Remko Popma
>            Assignee: Remko Popma
>
> As a stopgap solution for LOG4J2-406, all MBeans are unregistered when a 
> LoggerContext is stopped. 
> In an application server, multiple web applications can be deployed and 
> undeployed independently and a better solution would only unregister the 
> MBeans associated with the web application that is being undeployed.
> Current MBean ObjectNames look like this (simplified):
> {code}
> ...StatusLogger
> ...ContextSelector
> ...LoggerContext,ctx=%s
> ...LoggerConfig,ctx=%s,name=%s
> ...Appender,ctx=%s,name=%s
> ...
> {code}
> Assuming that every web application has a unique name, and this name becomes 
> the name of the LoggerContext, then one solution would be to create 
> StatusLogger and ContextSelector MBeans that have the LoggerContext name in 
> their ObjectName:
> {code}
> ...StatusLogger,ctx=%s
> ...ContextSelector,ctx=%s
> ...LoggerContext,ctx=%s
> ...LoggerConfig,ctx=%s,name=%s
> ...Appender,ctx=%s,name=%s
> ...
> {code}
> This way, every web application would have its own StatusLogger and 
> ContextSelector MBeans. The MBeans may point to the same (shared) underlying 
> StatusLogger and ContextSelector objects. When a web application is 
> undeployed, unregistering all MBeans associated with the LoggerContext will 
> not affect any MBeans associated with another web application (which has it 
> own, separate, LoggerContext).



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
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