2011-06-03 76 views
7

的logback上的文檔,他們提出把JMX信息到XML文件似乎很容易:Logback Groovy配置使用JMX?

http://logback.qos.ch/manual/jmxConfig.html

但他們所有的例子都是用自己的XML配置,我想使用Groovy。沒有配置JMX提到他們Groovy的DSL文檔中:

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。

任何想法我需要做什麼?

回答

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() 

我自己沒有測試過這個代碼,但我希望總體思路清晰。

+0

這確實奏效 - 謝謝!但是如果logback文檔指出Groovy配置本身/不容易執行JMX,那將會更好。他們的文檔聽起來像語法是一樣的。 – MikeHoss 2011-06-06 13:08:18

+1

剛剛添加到他們的錯誤跟蹤器:http://jira.qos.ch/browse/LBGENERAL-48 – sourcedelica 2011-07-03 00:34:00