我有一个JGroups设置,它有多个JGroups协议栈(例如,一个用于应用服务器,此处为JBoss EAP5,另一个用于自定义应用程序)。
我希望将JGroups的协议日志级别设置为给定级别,但只针对给定的协议实例,而不是全局记录器。也就是说,我想设置日志级别,但只针对协议栈,而不是其他协议栈。这用于调试我的自定义应用程序JGroups协议栈。
我开始为日志配置( logging configuration,log4j)中的给定协议全局设置日志级别,但这对于所有协议栈都是活动的。因此,会产生许多日志消息。
然后,我尝试了一种更好的方法:所有JGroups协议Protocol的超类都有一个方法setLevel,该方法可以用来设置日志级别(可以通过编程或通过XML文件进行配置)。由于Protocol.setLevel(String)只能从JGroups 2.8.0中获得,所以我隔离了EAR类加载程序,以便从JBoss EAP5服务器覆盖JGroups 2.6.20。但是效果与全局配置相同:日志级别是为所有协议栈设置的。
是否有方法为给定的协议配置JGroups日志记录级别?如果是,怎么做?
发布于 2013-09-24 13:26:45
您不能这样做,因为记录器是与类名绑定的,而不是与类加载器绑定的。
然而,有一些解决办法:
<TRACE/>配置文件(即文件末尾)的协议栈底部添加一个jgroups.xml或<HDRS/>协议:这将显示发送到System.out上的向上或向下协议的任何Event。print_local_addr协议中将true属性设置为GMS:这将在System.out上显示本地地址。https://stackoverflow.com/questions/18330282
复制相似问题