【问题标题】:Define logback shutdown hook in Spring Boot在 Spring Boot 中定义 logback 关闭钩子
【发布时间】:2018-01-23 09:20:54
【问题描述】:

我在 spring-boot (1.5.3.RELEASE) 应用程序中使用 AsyncAppender。

logback.xml

<appender name="FILE_ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>5000</queueSize>
    <discardingThreshold>0</discardingThreshold>
    <appender-ref ref="FILE" />
</appender>

根据 logback 文档,

在应用程序关闭或重新部署时,必须停止 AsyncAppender 为了停止和回收工作线程并刷新 从队列中记录事件。

https://logback.qos.ch/manual/appenders.html

进一步说:

为了避免打断这些下的工作线程 条件下,可以将关闭钩子插入到 JVM 运行时中 在启动 JVM 关闭后正确停止 LoggerContext

我想知道如何在 Spring Boot 应用程序中停止 AsyncAppender。在 Spring Boot 的哪个地方,我应该定义关闭钩子?

【问题讨论】:

    标签: spring-boot logback


    【解决方案1】:

    只需将&lt;shutdownHook/&gt; 指令添加到您的logback.xml。例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    
        <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
    
        <appender name="FILE_ASYNC" class="ch.qos.logback.classic.AsyncAppender">
            <queueSize>5000</queueSize>
            <discardingThreshold>0</discardingThreshold>
            <appender-ref ref="FILE" />
        </appender>
    
        <!-- the rest of your logback config -->
    
    </configuration>
    

    有了这个,你会注意到当 Logback 自我配置时会发出以下日志消息:

    ch.qos.logback.core.joran.action.ShutdownHookAction 中的信息 - 即将实例化 [ch.qos.logback.core.hook.DelayingShutdownHook] 类型的关闭挂钩

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题,但 logback 版本为 1.1.6 和 spring-boot 1.5.4。 我的解决方案是添加:

      logging.register-shutdown-hook=true
      

      到application.properties文件中进行邀请

      org.springframework.boot.logging.logback.LogbackLoggingSystem 在 ApplicationContext.close 调用上停止 LoggerContext。

      【讨论】:

        【解决方案3】:

        从 logback 的 1.1.10 版本开始,您无需显式定义关闭挂钩。版本1.1.10 以后,logback 负责在 web 应用程序停止或重新加载时停止当前的 logback-classic 上下文(以及所有附加程序)。尝试更新您的 logback 版本并检查一次。

        这是更新后的文档:https://logback.qos.ch/manual/configuration.html#webShutdownHook

        【讨论】:

          猜你喜欢
          • 2014-12-27
          • 2023-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-21
          • 2023-04-04
          • 2019-01-19
          • 1970-01-01
          相关资源
          最近更新 更多