Logback Groovy 配置使用 JMX?

发布于 2024-11-11 16:54:04 字数 1504 浏览 1 评论 0原文

在 Logback 的文档中,他们使将 JMX 信息放入 XML 文件看起来很容易:

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

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

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 做任何事情——只是放入控制台附加程序。

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

On Logback's documentation, they make putting JMX info into the XML file seem easy:

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

But all their examples are using their XML configuration and I want to use Groovy. There is no mention of JMX Configurator in their Groovy DSL documentation:

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

So I copied the first JMX/XML example in their XML to Groovy translator.

The 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>

The translator:

http://logback.qos.ch/translator/asGroovy.html

And the result:

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"])

And it didn't do anything with JMX -- just put in the console appender.

Any ideas what I need to do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

玩世 2024-11-18 16:54:04

用于解析基于 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()

我自己还没有测试过这段代码,但我希望总体思路是清楚的。

The configurator to parse the Groovy-based configuration files, doesn't support the jmxConfigurator as in the XML-based configuration files. But we can still write a method in our Groov configuration file to initialize the JMX Configurator.

If we look at the source code of Logback we see that the file ch.qos.logback.classic.joran.action.JMXConfigurationAction does the stuff to set up JMX from the XML-based configuration. We can use this code as a sample for the Groovy version.

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

I haven't tested this code myself, but I hope the general idea is clear.

眼睛会笑 2024-11-18 16:54:04

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

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

jmxConfigurator()

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

Logback added support for JMX configuration in the Groovy config in 2013:

You can register a JMXConfigurator MBean (using Logback's default ObjectName ), by adding the following to your logback.groovy:

jmxConfigurator()

More details and overloads of this method in the manual.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文