Logback Groovy Config使用JMX?

Mik*_*oss 7 groovy jmx logback

在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>
Run Code Online (Sandbox Code Playgroud)

翻译者:

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"])
Run Code Online (Sandbox Code Playgroud)

它没有对JMX做任何事 - 只需放入控制台appender.

有什么想法我需要做什么?

小智 8

解析基于Groovy的配置文件的配置程序不支持基于XML的配置文件中的jmxConfigurator.但是我们仍然可以在Groov配置文件中编写一个方法来初始化JMX Configurator.

如果我们查看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()
Run Code Online (Sandbox Code Playgroud)

我自己没有测试过这段代码,但我希望这个概念很清楚.


Eti*_*veu 2

Logback在 2013 年在 Groovy 配置中添加了对 JMX 配置的支持

您可以通过将以下内容添加到您的 中来注册 JMXConfigurator MBean (使用 Logback 的默认 ObjectName )logback.groovy

jmxConfigurator()
Run Code Online (Sandbox Code Playgroud)

手册中有关此方法的更多详细信息和重载。