logbackgroovy配置是否使用JMX?

logbackgroovy配置是否使用JMX?,groovy,jmx,logback,Groovy,Jmx,Logback,在Logback的文档中,将JMX信息放入XML文件似乎很容易: 但是他们所有的例子都使用XML配置,我想使用Groovy。Groovy DSL文档中没有提到JMX配置器: 因此,我在XML到Groovy转换器中复制了第一个JMX/XML示例 XML: <configuration> <jmxConfigurator /> <appender name="console" class="ch.qos.logback.

在Logback的文档中,将JMX信息放入XML文件似乎很容易:

但是他们所有的例子都使用XML配置,我想使用Groovy。Groovy DSL文档中没有提到JMX配置器:

因此,我在XML到Groovy转换器中复制了第一个JMX/XML示例

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>
它对JMX没有任何作用——只是放在控制台的appender中


你知道我需要做什么吗?

解析基于Groovy的配置文件的配置程序不支持基于XML的配置文件中的jmxConfigurator。但是我们仍然可以在GroovConfiguration文件中编写一个方法来初始化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()
我自己还没有测试过这段代码,但我希望总体思路是清楚的。

2013年回顾:

通过将以下内容添加到
Logback.groovy中,可以注册JMXConfiguration MBean(使用Logback的默认对象名):

jmxConfigurator()
此方法的更多详细信息和重载。

这确实有效--谢谢!但是,如果logback文档指出Groovy配置不能本地/轻松地执行JMX,那就更好了。他们的文档听起来好像语法是一样的。
jmxConfigurator()