在Logback的文档中,他们将JMX信息放入XML文件看起来很简单:
http://logback.qos.ch/manual/jmxConfig.html
但他们所有的例子都在使用他们的XML配置,我想使用Groovy。在他们的Groovy DSL文档中没有提到JMX Configurator:
http://logback.qos.ch/manual/groovy.html
所以我将他们XML中的第一个JMX / XML示例复制到Groovy翻译器。
XML:
<configuration>
<jmxConfigurator />
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%date [%thread] %-5level %logger{25} - %msg%n</Pattern>
</layout>
</appender>
<root level="debug">
<appender-ref ref="console" />
</root>
</configuration>
翻译:
http://logback.qos.ch/translator/asGroovy.html
结果:
import ch.qos.logback.classic.PatternLayout
import ch.qos.logback.core.ConsoleAppender
import static ch.qos.logback.classic.Level.DEBUG
appender("console", ConsoleAppender) {
layout(PatternLayout) {
pattern = "%date [%thread] %-5level %logger{25} - %msg%n"
}
}
root(DEBUG, ["console"])
它没有对JMX做任何事情 - 只需放入控制台appender。
任何想法我需要做什么?
答案 0 :(得分:8)
用于解析基于Groovy的配置文件的配置程序不支持基于XML的配置文件中的jmxConfigurator。但我们仍然可以在Groov配置文件中编写一个方法来初始化JMX配置器。
如果我们查看Logback的源代码,我们会看到文件ch.qos.logback.classic.joran.action.JMXConfigurationAction可以完成从基于XML的配置中设置JMX的工作。我们可以使用此代码作为Groovy版本的示例。
def jmxConfigurator() {
def contextName = context.name
def objectNameAsString = MBeanUtil.getObjectNameFor(contextName, JMXConfigurator.class)
def objectName = MBeanUtil.string2ObjectName(context, this, objectNameAsString)
def platformMBeanServer = ManagementFactory.getPlatformMBeanServer()
if (!MBeanUtil.isRegistered(platformMBeanServer, objectName)) {
JMXConfigurator jmxConfigurator = new JMXConfigurator((LoggerContext) context, platformMBeanServer, objectName)
try {
platformMBeanServer.registerMBean(jmxConfigurator, objectName)
} catch (all) {
addError("Failed to create mbean", all)
}
}
}
jmxConfigurator()
我自己没有测试过这段代码,但我希望这个概念很明确。
答案 1 :(得分:1)
2013年退回added support for JMX configuration in the Groovy config:
您可以通过向logback.groovy
添加以下内容来注册JMXConfigurator MBean(使用Logback的默认ObjectName):
jmxConfigurator()
此方法的更多详细信息和重载in the manual。