JGroupsLogging

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.