Вход в Groovy Config для использования JMX? - PullRequest
7 голосов
/ 03 июня 2011

В документации Logback они позволяют легко помещать информацию JMX в файл XML:

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

Но все их примеры используют конфигурацию XML, и я хочу использовать Groovy. В документации по Groovy DSL нет упоминания о JMX Configurator:

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

Итак, я скопировал первый пример JMX / XML в их 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 ничего не получилось - просто вставьте консольный аппендер.

Есть идеи, что мне нужно делать?

Ответы [ 2 ]

8 голосов
/ 06 июня 2011

Конфигуратор для анализа файлов конфигурации на основе Groovy не поддерживает jmxConfigurator, как в файлах конфигурации на основе XML.Но мы все еще можем написать метод в нашем файле конфигурации Groov для инициализации JMX Configurator.

Если мы посмотрим на исходный код Logback, мы увидим, что это файл ch.qos.logback.classic.joran.action.JMXConfigurationAction выполняет настройку JMX из конфигурации на основе XML.Мы можем использовать этот код в качестве примера для версии 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 голос
/ 05 февраля 2015

Logback добавлена ​​поддержка конфигурации JMX в конфигурации Groovy в 2013 году:

Вы можете зарегистрировать MBean JMXConfigurator (используя имя объекта Logback по умолчанию), добавив следующее в logback.groovy:

jmxConfigurator()

Подробнее и перегрузки этого метода в руководстве .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...