Class Server
- java.lang.Object
-
- org.apache.logging.log4j.core.jmx.Server
-
public final class Server extends java.lang.Object
Creates MBeans to instrument various classes in the log4j class hierarchy.All instrumentation for Log4j 2 classes can be disabled by setting system property
-Dlog4j2.disable.jmx=true
.
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String
CONTEXT_NAME_ALL
static java.lang.String
DOMAIN
The domain part, or prefix ("org.apache.logging.log4j2") of theObjectName
of all MBeans that instrument Log4J2 components.(package private) static java.util.concurrent.Executor
executor
private static StatusLogger
LOGGER
private static java.lang.String
PROPERTY_ASYNC_NOTIF
private static java.lang.String
PROPERTY_DISABLE_JMX
private static java.lang.String
THREAD_NAME_PREFIX
-
Constructor Summary
Constructors Modifier Constructor Description private
Server()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static java.util.concurrent.ExecutorService
createExecutor()
Returns either anull
Executor (causing JMX notifications to be sent from the caller thread) or a daemon background thread Executor, depending on the value of system property "log4j2.jmx.notify.async".static java.lang.String
escape(java.lang.String name)
Either returns the specified name as is, or returns a quoted value containing the specified name with the special characters (comma, equals, colon, quote, asterisk, or question mark) preceded with a backslash.private static ContextSelector
getContextSelector()
Returns theContextSelector
of the currentLog4jContextFactory
.private static boolean
isJmxDisabled()
private static void
register(javax.management.MBeanServer mbs, java.lang.Object mbean, javax.management.ObjectName objectName)
private static void
registerAppenders(LoggerContext ctx, javax.management.MBeanServer mbs, java.util.concurrent.Executor executor)
private static void
registerContextSelector(java.lang.String contextName, ContextSelector selector, javax.management.MBeanServer mbs, java.util.concurrent.Executor executor)
private static void
registerLoggerConfigs(LoggerContext ctx, javax.management.MBeanServer mbs, java.util.concurrent.Executor executor)
private static void
registerStatusLogger(java.lang.String contextName, javax.management.MBeanServer mbs, java.util.concurrent.Executor executor)
static void
reregisterMBeansAfterReconfigure()
static void
reregisterMBeansAfterReconfigure(javax.management.MBeanServer mbs)
private static void
unregisterAllMatching(java.lang.String search, javax.management.MBeanServer mbs)
private static void
unregisterAppenders(java.lang.String contextName, javax.management.MBeanServer mbs)
private static void
unregisterAsyncAppenders(java.lang.String contextName, javax.management.MBeanServer mbs)
private static void
unregisterAsyncLoggerConfigRingBufferAdmins(java.lang.String contextName, javax.management.MBeanServer mbs)
private static void
unregisterAsyncLoggerRingBufferAdmins(java.lang.String contextName, javax.management.MBeanServer mbs)
private static void
unregisterContexts(javax.management.MBeanServer mbs)
private static void
unregisterContextSelector(java.lang.String contextName, javax.management.MBeanServer mbs)
private static void
unregisterLoggerConfigs(java.lang.String contextName, javax.management.MBeanServer mbs)
static void
unregisterLoggerContext(java.lang.String loggerContextName)
Unregisters all MBeans associated with the specified logger context (including MBeans forLoggerConfig
s andAppender
s from the platform MBean server.static void
unregisterLoggerContext(java.lang.String contextName, javax.management.MBeanServer mbs)
Unregisters all MBeans associated with the specified logger context (including MBeans forLoggerConfig
s andAppender
s from the platform MBean server.static void
unregisterMBeans()
Unregister all log4j MBeans from the platform MBean server.static void
unregisterMBeans(javax.management.MBeanServer mbs)
Unregister all log4j MBeans from the specified MBean server.private static void
unregisterStatusLogger(java.lang.String contextName, javax.management.MBeanServer mbs)
-
-
-
Field Detail
-
CONTEXT_NAME_ALL
private static final java.lang.String CONTEXT_NAME_ALL
- See Also:
- Constant Field Values
-
DOMAIN
public static final java.lang.String DOMAIN
The domain part, or prefix ("org.apache.logging.log4j2") of theObjectName
of all MBeans that instrument Log4J2 components.- See Also:
- Constant Field Values
-
PROPERTY_DISABLE_JMX
private static final java.lang.String PROPERTY_DISABLE_JMX
- See Also:
- Constant Field Values
-
PROPERTY_ASYNC_NOTIF
private static final java.lang.String PROPERTY_ASYNC_NOTIF
- See Also:
- Constant Field Values
-
THREAD_NAME_PREFIX
private static final java.lang.String THREAD_NAME_PREFIX
- See Also:
- Constant Field Values
-
LOGGER
private static final StatusLogger LOGGER
-
executor
static final java.util.concurrent.Executor executor
-
-
Method Detail
-
createExecutor
private static java.util.concurrent.ExecutorService createExecutor()
Returns either anull
Executor (causing JMX notifications to be sent from the caller thread) or a daemon background thread Executor, depending on the value of system property "log4j2.jmx.notify.async". If this property is not set, use anull
Executor for web apps to avoid memory leaks and other issues when the web app is restarted.- See Also:
- LOG4J2-938
-
escape
public static java.lang.String escape(java.lang.String name)
Either returns the specified name as is, or returns a quoted value containing the specified name with the special characters (comma, equals, colon, quote, asterisk, or question mark) preceded with a backslash.- Parameters:
name
- the name to escape so it can be used as a value in anObjectName
.- Returns:
- the escaped name
-
isJmxDisabled
private static boolean isJmxDisabled()
-
reregisterMBeansAfterReconfigure
public static void reregisterMBeansAfterReconfigure()
-
reregisterMBeansAfterReconfigure
public static void reregisterMBeansAfterReconfigure(javax.management.MBeanServer mbs)
-
unregisterMBeans
public static void unregisterMBeans()
Unregister all log4j MBeans from the platform MBean server.
-
unregisterMBeans
public static void unregisterMBeans(javax.management.MBeanServer mbs)
Unregister all log4j MBeans from the specified MBean server.- Parameters:
mbs
- the MBean server to unregister from.
-
getContextSelector
private static ContextSelector getContextSelector()
Returns theContextSelector
of the currentLog4jContextFactory
.- Returns:
- the
ContextSelector
of the currentLog4jContextFactory
-
unregisterLoggerContext
public static void unregisterLoggerContext(java.lang.String loggerContextName)
Unregisters all MBeans associated with the specified logger context (including MBeans forLoggerConfig
s andAppender
s from the platform MBean server.- Parameters:
loggerContextName
- name of the logger context to unregister
-
unregisterLoggerContext
public static void unregisterLoggerContext(java.lang.String contextName, javax.management.MBeanServer mbs)
Unregisters all MBeans associated with the specified logger context (including MBeans forLoggerConfig
s andAppender
s from the platform MBean server.- Parameters:
contextName
- name of the logger context to unregistermbs
- the MBean Server to unregister the instrumented objects from
-
registerStatusLogger
private static void registerStatusLogger(java.lang.String contextName, javax.management.MBeanServer mbs, java.util.concurrent.Executor executor) throws javax.management.InstanceAlreadyExistsException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException
- Throws:
javax.management.InstanceAlreadyExistsException
javax.management.MBeanRegistrationException
javax.management.NotCompliantMBeanException
-
registerContextSelector
private static void registerContextSelector(java.lang.String contextName, ContextSelector selector, javax.management.MBeanServer mbs, java.util.concurrent.Executor executor) throws javax.management.InstanceAlreadyExistsException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException
- Throws:
javax.management.InstanceAlreadyExistsException
javax.management.MBeanRegistrationException
javax.management.NotCompliantMBeanException
-
unregisterStatusLogger
private static void unregisterStatusLogger(java.lang.String contextName, javax.management.MBeanServer mbs)
-
unregisterContextSelector
private static void unregisterContextSelector(java.lang.String contextName, javax.management.MBeanServer mbs)
-
unregisterLoggerConfigs
private static void unregisterLoggerConfigs(java.lang.String contextName, javax.management.MBeanServer mbs)
-
unregisterContexts
private static void unregisterContexts(javax.management.MBeanServer mbs)
-
unregisterAppenders
private static void unregisterAppenders(java.lang.String contextName, javax.management.MBeanServer mbs)
-
unregisterAsyncAppenders
private static void unregisterAsyncAppenders(java.lang.String contextName, javax.management.MBeanServer mbs)
-
unregisterAsyncLoggerRingBufferAdmins
private static void unregisterAsyncLoggerRingBufferAdmins(java.lang.String contextName, javax.management.MBeanServer mbs)
-
unregisterAsyncLoggerConfigRingBufferAdmins
private static void unregisterAsyncLoggerConfigRingBufferAdmins(java.lang.String contextName, javax.management.MBeanServer mbs)
-
unregisterAllMatching
private static void unregisterAllMatching(java.lang.String search, javax.management.MBeanServer mbs)
-
registerLoggerConfigs
private static void registerLoggerConfigs(LoggerContext ctx, javax.management.MBeanServer mbs, java.util.concurrent.Executor executor) throws javax.management.InstanceAlreadyExistsException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException
- Throws:
javax.management.InstanceAlreadyExistsException
javax.management.MBeanRegistrationException
javax.management.NotCompliantMBeanException
-
registerAppenders
private static void registerAppenders(LoggerContext ctx, javax.management.MBeanServer mbs, java.util.concurrent.Executor executor) throws javax.management.InstanceAlreadyExistsException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException
- Throws:
javax.management.InstanceAlreadyExistsException
javax.management.MBeanRegistrationException
javax.management.NotCompliantMBeanException
-
register
private static void register(javax.management.MBeanServer mbs, java.lang.Object mbean, javax.management.ObjectName objectName) throws javax.management.InstanceAlreadyExistsException, javax.management.MBeanRegistrationException, javax.management.NotCompliantMBeanException
- Throws:
javax.management.InstanceAlreadyExistsException
javax.management.MBeanRegistrationException
javax.management.NotCompliantMBeanException
-
-