当前位置: 首页 > 知识库问答 >
问题:

在Spring Boot中定义logback关闭挂钩

寇涵容
2023-03-14
<appender name="FILE_ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    <queueSize>5000</queueSize>
    <discardingThreshold>0</discardingThreshold>
    <appender-ref ref="FILE" />
</appender>

为了避免在这些情况下中断工作线程,可以向JVM运行时插入一个shutdown钩子,该钩子在JVM关闭启动后正确地停止LoggerContext

我想知道如何在Spring Boot应用程序中停止AsyncAppender。在Spring引导的哪个位置,我应该定义关机钩?

共有1个答案

洪和风
2023-03-14

只需将 指令添加到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]的关闭挂钩

 类似资料:
  • 我在springboot应用程序中使用webclient来调用外部restful web服务。间歇性地获取此异常。 在收到此异常之前,我在日志中看到以下警告。 这是完整的堆栈跟踪: 这是MessageServiceImpl.java 这里是客户端组件类 在下面的配置中,我在SSLContext中添加了信任存储。 下面是应用程序属性文件 我已经尝试通过下面链接中给出的解决方案来解决这个问题,但是没有

  • 问题内容: 我在程序中添加了以下代码: 但是,我没有看到该消息。附加信息:我正在Java 7的Netbeans IDE内部运行该程序。 编辑:我忘了补充说,有一个使程序保持活动状态的全局线程。我通过按Netbeans右下角的[x]来关闭它。 问题答案: JVM可以有序或突然关闭。关闭挂钩会运行以有序关闭:当最后一个线程终止时,有人呼叫或通过其他平台特定的方式(例如,按Ctrl-C)。 Shutdo

  • 我通过以下方式添加了一个关机挂钩: 它正常工作正常,但当我在Eclipse中单击红色的停止按钮时就不行了。有没有办法在Eclipse中调用关闭挂钩?

  • 目前,我在应用程序中使用guava EventBus方法。侦听器尝试做一些工作,如果失败,事件应该返回总线并重新发送 我的问题是:如果我的应用程序正在关闭(执行关闭),该怎么办?它会在总线中发送剩余的事件吗? 我正在寻找一些方法,例如在ActiveMQ中实现关闭how 代理是否应该安装一个关闭挂钩,以便在JVM终止时正确关闭自己 不幸的是,我没有在EventBus番石榴中找到类似的东西。

  • 我有一个Spring启动应用程序在负载均衡器后面的两台服务器上运行。 我定义了一个关闭钩子,它将应用程序中的/healthcheckendpoint设置为返回404错误,等待30秒以完成所有操作,然后停止JVM。负载平衡器被配置为在看到404错误时将服务器置于维护模式。(这与“停机”状态不同——允许在维护模式下完成飞行中的连接) 问题是负载平衡器从未看到这些404响应。相反,它会拒绝第4层TCP连

  • 我正在使用Spring Boot创建一个访问数据库的简单web应用程序。通过在中设置属性,我利用了DataSource的自动配置功能。这一切都很出色,而且非常快--伟大的工作伙计们@Spring! 我公司的政策是不应该有明文密码。因此,我需要对进行加密。经过一番深入研究,我决定创建一个实现,该实现创建一个jasypt,如下所示: 然后,我用文件将其打包到它自己的jar中,如下所示: 当在maven