Version 5

    Logging in JGroups

     

    Refer to Logging for more information on how to enable logging if JGroups is used inside of JBoss

     

    Enabling

    org.jgroups

    at the TRACE level gives a lot of information, so make sure you have rolling logs configured. JGroups by default uses commons-logging, so both log4j and JDK logging can be used.

    The following categories can be enabled separately to reduce the log size:

    Category

    Package

    Comment

    Group membership

    org.jgroups.protocols.pbcast.GMS

    Logs JOINs, LEAVES, view creation

    Discovery

    org.jgroups.protocols.Discovery

    Initial discovery of members, used for JOIN

    Reliable unicasting

    org.jgroups.protocols.UNICAST

    For point-to-point communication

    Reliable multicasting

    org.jgroups.protocols.pbcast.NAKACK

    For multipoint communication

    Failure detection

    org.jgroups.protocols.FD

    Based on heartbeats

    Failure detection

    org.jgroups.protocols.FD_SOCK

    Based on TCP connections

     

     

    Dynamically changing log levels

    By default JGroups logs only warnings, errors and fatal messages. However, sometimes it is necessary to change the log level of a logger at runtime, e.g. when a system is hung and we don't want to shut it down so we can diagnose what went wrong.

    Since JGroups 2.8, this can be done on any protocol by calling <Protocol>setLevel(String level). This method is exposed via JMX on every protocol as an attribute.

    As an example, when we suspect NAKACK is the culprit, we can start jconsole and connect to the running process. Then pick the correct channel and show all protocols associated with that channel. Pick NAKACK and look at the attributes.

    Change attribute 'level' to TRACE. This will log all messages for org.jgroups.protocols.pbcast.NAKACK at the TRACE level. Note that you needs to have an appender configured, if there is no appender, nothing will happen.