Define logback shutdown hook in Spring Boot

Viewed 8152

I am using AsyncAppender in spring-boot (1.5.3.RELEASE) application.

logback.xml

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

As per logback documentation,

Upon application shutdown or redeploy, AsyncAppender must be stopped in order to stop and reclaim the worker thread and to flush the logging events from the queue.

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

Further it says:

In order to avoid interrupting the worker thread under these conditions, a shutdown hook can be inserted to the JVM runtime that stops the LoggerContext properly after JVM shutdown has been initiated

I want to know how to stop AsyncAppender in Spring Boot application. At which place in Spring Boot, should I define shutdown hook?

3 Answers

I had a similar problem but with version 1.1.6 of logback and spring-boot 1.5.4. The solution for me was to add :

logging.register-shutdown-hook=true

to the application.properties file for inviting

org.springframework.boot.logging.logback.LogbackLoggingSystem to stop the LoggerContext on ApplicationContext.close invocation.

Related