jmx - logback 的 shutdownHook 是否取消注册 jmxConfigurator

标签 jmx logback

我正在使用 <jmxConfigurator/> logback 中的元素; jmxConfigurator 声明如下:

Thus, unless your application is a standalone Java application, you **MUST** unregister the JMXConfigurator instance from the JVM's Mbeans server.

logback 文档还提到了 <shutdownHook/>根据文档执行以下操作的配置元素:
Installing a JVM shutdown hook is a convenient way for shutting down logback and releasing associated resources.

是否包括 <shutdownHook/>元素负责注销 <jmxConfigurator/> ?

最佳答案

是的,它确实。这是调试器的证明:
enter image description here

但是,有一些限制:

  • <shutdownHook/>仅从 1.1.3 版开始可用
  • 虽然 the documentation says那朴素的<shutdownHook/>足够了,你必须指定 class属性(property):<shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>否则 logback 会提示:
    ERROR in ch.qos.logback.core.joran.action.ShutdownHookAction - Missing class name for shutdown hook. Near [shutdownHook] line 16
    
  • To make sure that the JMXConfigurator gets stopped enable debug mode on the logback configuration:

    <configuration debug="true">
       ...
    </configuration>
    

    然后在日志的末尾,您会看到:

    ch.qos.logback.core.hook.DelayingShutdownHook@1a246fc6 中的信息 - 通过关闭 Hook 关闭 Logback 上下文
    ch.qos.logback.classic.jmx.JMXConfigurator(default) 中的信息 - onReset() 方法称为 JMXActivator [ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator]

    关于jmx - logback 的 shutdownHook 是否取消注册 jmxConfigurator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30173249/

    相关文章:

    java - 使用 JMX 的多个 Java 应用程序

    java - 使用 JMS 和 logback 的分布式日志记录

    logback - 如何为Mybatis配置登录以打印我的SQL

    java - jolokia 和 jmxtrans 有什么区别?什么时候选择一个而不是另一个?

    Spring JMX Mbean 未出现或未在 jconsole 中注册

    java - 如何在 JMX 中表示多态性?

    java - Oracle 11g dbms_java.start_jmx_agent 抛出异常

    java - 在生产版本中包含不同的 logback.xml

    java - 主机名在生产环境的 Logback/SLF4J 中未定义

    java - 如何配置 logback 以跳过某一类的所有日志消息?