小编Har*_*dev的帖子

Spring @PreDestroy:没有记录,因为Logback过早停止

在我的项目中,我使用Logback作为日志工具.我有以下课程

@Component
class Test {
    @PreDestroy
    public void destroy() {
        try {
            ...
        } catch (Exception e) {
            LoggerFactory.getLogger(getClass()).error(e.getLocalizedMessage(), e);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我取消部署servlet.发生异常时,Logback不会打印消息和堆栈跟踪.这是因为Logback在destroy()Spring调用之前正在清理.取消部署servlet时,这是第一个(也是最后一个)日志行:

15:46:19,084 |-INFO in ch.qos.logback.classic.servlet.LogbackServletContextListener@7957fe56 - About to stop ch.qos.logback.classic.LoggerContext [default]
Run Code Online (Sandbox Code Playgroud)

我通过添加a System.out.println("...");来验证Logback是否先停止destroy().

有没有什么办法解决这一问题?

我的依赖:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>5.0.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>99-empty</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency> …
Run Code Online (Sandbox Code Playgroud)

java spring logback logback-classic

8
推荐指数
1
解决办法
723
查看次数

标签 统计

java ×1

logback ×1

logback-classic ×1

spring ×1