Class 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 the ObjectName 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 a null 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 the ContextSelector of the current Log4jContextFactory.
      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 for LoggerConfigs and Appenders 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 for LoggerConfigs and Appenders 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)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 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 the ObjectName 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
      • executor

        static final java.util.concurrent.Executor executor
    • Constructor Detail

      • Server

        private Server()
    • Method Detail

      • createExecutor

        private static java.util.concurrent.ExecutorService createExecutor()
        Returns either a null 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 a null 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 an ObjectName.
        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 the ContextSelector of the current Log4jContextFactory.
        Returns:
        the ContextSelector of the current Log4jContextFactory
      • unregisterLoggerContext

        public static void unregisterLoggerContext​(java.lang.String loggerContextName)
        Unregisters all MBeans associated with the specified logger context (including MBeans for LoggerConfigs and Appenders 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 for LoggerConfigs and Appenders from the platform MBean server.
        Parameters:
        contextName - name of the logger context to unregister
        mbs - 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