3

我有一个 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 日志记录级别?如果是,该怎么做?

4

1 回答 1

3

你不能这样做,因为记录器绑定到类名,而不是类加载器。

但是,有一些解决方法:

  • 在配置文件中的协议栈底部添加一个<TRACE/>or协议(即在文件末尾):这将显示任何发送到上或下协议的.<HDRS/>jgroups.xmlEventSystem.out
  • 在协议中将print_local_addr属性设置为:这将在 上显示本地地址。trueGMSSystem.out
于 2013-09-24T13:26:45.670 回答