我有一个带有多个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日志记录级别?如果是的话,该怎么做?
答案 0 :(得分:2)
你不能这样做,因为记录器与类名相关联,而不是与类加载器相关联。
但是,有一些解决方法:
<TRACE/>
配置文件(即文件末尾)的协议堆栈底部添加<HDRS/>
或jgroups.xml
协议:这将显示任何Event
}已发送到System.out
上的向上或向下协议。print_local_addr
协议中将true
属性设置为GMS
:这将在System.out
上显示本地地址。