为给定的协议实例设置JGroups的协议日志级别

时间:2013-08-20 08:23:53

标签: logging jboss jgroups

我有一个带有多个JGroups协议栈的JGroups设置(例如,一个用于应用程序服务器,一个用于JBoss EAP5,另一个用于自定义应用程序)。

我希望将JGroups的协议日志级别设置为给定级别,但仅针对给定的协议实例,而不是针对全局记录器。即我想设置日志级别,但仅限于协议堆栈,而不是其他协议堆栈。这用于调试我的自定义应用程序JGroups协议栈。

我开始在日志记录配置(log4j)中为给定协议全局设置日志级别,但这对所有协议栈都是活动的。因此,会产生大量的日志消息。

然后我尝试了一种更精细的方法:所有JGroups协议Protocol的超类都有一个方法setLevel,可用于设置日志记录级别(可以以编程方式或通过XML配置文件进行配置) )。由于Protocol.setLevel(String)仅可从JGroups 2.8.0获得,因此我隔离了EAR类加载器,以便从JBoss EAP5服务器覆盖JGroups 2.6.20。但效果与全局配置相同:为所有协议栈设置日志级别。

是否有办法为给定的ProtocolStack配置给定协议的JGroups日志记录级别?如果是的话,该怎么做?

1 个答案:

答案 0 :(得分:2)

你不能这样做,因为记录器与类名相关联,而不是与类加载器相关联。

但是,有一些解决方法:

  • <TRACE/>配置文件(即文件末尾)的协议堆栈底部添加<HDRS/>jgroups.xml协议:这将显示任何Event }已发送到System.out上的向上或向下协议。
  • print_local_addr协议中将true属性设置为GMS:这将在System.out上显示本地地址。