Class StatusLoggerAdmin

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.util.EventListener, javax.management.MBeanRegistration, javax.management.NotificationBroadcaster, javax.management.NotificationEmitter, StatusLoggerAdminMBean, StatusListener

    public class StatusLoggerAdmin
    extends javax.management.NotificationBroadcasterSupport
    implements StatusListener, StatusLoggerAdminMBean, javax.management.MBeanRegistration
    Implementation of the StatusLoggerAdminMBean interface.
    • Constructor Summary

      Constructors 
      Constructor Description
      StatusLoggerAdmin​(java.lang.String contextName, java.util.concurrent.Executor executor)
      Constructs a new StatusLoggerAdmin with the Executor to be used for sending Notifications asynchronously to listeners.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addNotificationListener​(javax.management.NotificationListener listener, javax.management.NotificationFilter filter, java.lang.Object handback)  
      void close()  
      private static javax.management.MBeanNotificationInfo createNotificationInfo()  
      java.lang.String getContextName()
      Returns the name of the LoggerContext that the StatusLogger is associated with.
      java.lang.String getLevel()
      Returns the StatusLogger level as a String.
      javax.management.ObjectName getObjectName()
      Returns the ObjectName of this mbean.
      java.util.List<StatusData> getStatusData()
      Returns a list with the most recent StatusData objects in the status history.
      java.lang.String[] getStatusDataHistory()
      Returns a string array with the most recent messages in the status history.
      Level getStatusLevel()
      Return the Log Level that this listener wants included.
      void log​(StatusData data)
      Called as events occur to process the StatusData.
      private long nextSeqNo()  
      private long nowMillis()  
      void postDeregister()  
      void postRegister​(java.lang.Boolean registrationDone)  
      void preDeregister()  
      javax.management.ObjectName preRegister​(javax.management.MBeanServer server, javax.management.ObjectName name)  
      void setLevel​(java.lang.String level)
      Sets the StatusLogger level to the specified value.
      • Methods inherited from class javax.management.NotificationBroadcasterSupport

        getNotificationInfo, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • sequenceNo

        private final java.util.concurrent.atomic.AtomicLong sequenceNo
      • objectName

        private final javax.management.ObjectName objectName
      • contextName

        private final java.lang.String contextName
      • level

        private Level level
      • statusListenerRegistered

        private boolean statusListenerRegistered
      • statusListenerRegistrationGuard

        private final java.util.concurrent.locks.Lock statusListenerRegistrationGuard
    • Constructor Detail

      • StatusLoggerAdmin

        public StatusLoggerAdmin​(java.lang.String contextName,
                                 java.util.concurrent.Executor executor)
        Constructs a new StatusLoggerAdmin with the Executor to be used for sending Notifications asynchronously to listeners.
        Parameters:
        contextName - name of the LoggerContext under which to register this StatusLoggerAdmin. Note that the StatusLogger may be registered multiple times, once for each LoggerContext. In web containers, each web application has its own LoggerContext and by associating the StatusLogger with the LoggerContext, all associated MBeans can be unloaded when the web application is undeployed.
        executor - used to send notifications asynchronously
    • Method Detail

      • createNotificationInfo

        private static javax.management.MBeanNotificationInfo createNotificationInfo()
      • addNotificationListener

        public void addNotificationListener​(javax.management.NotificationListener listener,
                                            javax.management.NotificationFilter filter,
                                            java.lang.Object handback)
        Specified by:
        addNotificationListener in interface javax.management.NotificationBroadcaster
        Overrides:
        addNotificationListener in class javax.management.NotificationBroadcasterSupport
      • preRegister

        public javax.management.ObjectName preRegister​(javax.management.MBeanServer server,
                                                       javax.management.ObjectName name)
        Specified by:
        preRegister in interface javax.management.MBeanRegistration
      • postRegister

        public void postRegister​(java.lang.Boolean registrationDone)
        Specified by:
        postRegister in interface javax.management.MBeanRegistration
      • preDeregister

        public void preDeregister()
        Specified by:
        preDeregister in interface javax.management.MBeanRegistration
      • postDeregister

        public void postDeregister()
        Specified by:
        postDeregister in interface javax.management.MBeanRegistration
      • getStatusDataHistory

        public java.lang.String[] getStatusDataHistory()
        Description copied from interface: StatusLoggerAdminMBean
        Returns a string array with the most recent messages in the status history. The list has up to 200 entries by default but the length can be configured with system property "log4j2.status.entries".
        Specified by:
        getStatusDataHistory in interface StatusLoggerAdminMBean
        Returns:
        the most recent messages logged by the StatusLogger.
      • getStatusData

        public java.util.List<StatusData> getStatusData()
        Description copied from interface: StatusLoggerAdminMBean
        Returns a list with the most recent StatusData objects in the status history. The list has up to 200 entries by default but the length can be configured with system property "log4j2.status.entries".

        Note that the returned objects may contain Throwables from external libraries.

        JMX clients calling this method must be prepared to deal with the errors that occur if they do not have the class definition for such Throwables in their classpath.

        Specified by:
        getStatusData in interface StatusLoggerAdminMBean
        Returns:
        the most recent messages logged by the StatusLogger.
      • getStatusLevel

        public Level getStatusLevel()
        Description copied from interface: StatusListener
        Return the Log Level that this listener wants included.
        Specified by:
        getStatusLevel in interface StatusListener
        Returns:
        the Log Level.
      • setLevel

        public void setLevel​(java.lang.String level)
        Description copied from interface: StatusLoggerAdminMBean
        Sets the StatusLogger level to the specified value.
        Specified by:
        setLevel in interface StatusLoggerAdminMBean
        Parameters:
        level - the new StatusLogger level.
      • getContextName

        public java.lang.String getContextName()
        Description copied from interface: StatusLoggerAdminMBean
        Returns the name of the LoggerContext that the StatusLogger is associated with.
        Specified by:
        getContextName in interface StatusLoggerAdminMBean
        Returns:
        logger context name
      • log

        public void log​(StatusData data)
        Description copied from interface: StatusListener
        Called as events occur to process the StatusData.
        Specified by:
        log in interface StatusListener
        Parameters:
        data - The StatusData for the event.
      • nextSeqNo

        private long nextSeqNo()
      • nowMillis

        private long nowMillis()
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException