1
我使用logback 1.1.10和groovy配置。我最近发现shutdownHook preference,但我还没有找到使用groovy配置来启用它的方法。这可能吗?还是缺少一个功能?Logback:使用Groovy配置启用shutdownHook
我使用logback 1.1.10和groovy配置。我最近发现shutdownHook preference,但我还没有找到使用groovy配置来启用它的方法。这可能吗?还是缺少一个功能?Logback:使用Groovy配置启用shutdownHook
Logback的shutdownHook已添加到v1.3中,并且可以使用Groovy进行配置。该docs有点轻在这个问题上和xml->groovy translator忽略shutdownHook但我如下已经验证通过Groovy的配置纳入关闭挂钩的:
import ch.qos.logback.classic.AsyncAppender
import ch.qos.logback.classic.PatternLayout
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender
import static ch.qos.logback.classic.Level.INFO
scan("30 seconds")
statusListener(OnConsoleStatusListener)
def shutdownHook() {
def shutdownHook = new ch.qos.logback.core.hook.DelayingShutdownHook();
shutdownHook.setContext(context);
def Thread hookThread = new Thread(shutdownHook, "Logback shutdown hook [" + context.name + "]");
context.putObject("SHUTDOWN_HOOK", hookThread);
Runtime.getRuntime().addShutdownHook(hookThread);
}
shutdownHook();
appender("Console-Appender", ConsoleAppender) {
encoder(PatternLayoutEncoder) {
pattern = "%d|%-5p|%t|%msg%n"
}
}
logger("com", INFO, ["Console-Appender"], false)
root(INFO, ["Console-Appender"])
这是通过运行一个Java程序,其使用的logback证实,通过使用-Dlogback.configurationFile
明确指着上面的配置,并输出结果清楚地显示正在使用的关闭挂钩:
08:47:47,705 |-INFO in [email protected] - Setting ReconfigureOnChangeTask scanning period to 30 seconds
08:47:47,728 |-INFO in [email protected] - Added status listener of type [ch.qos.logback.core.status.OnConsoleStatusListener]
08:47:47,750 |-INFO in [email protected] - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
08:47:47,752 |-INFO in [email protected] - Naming appender as [Console-Appender]
08:47:47,902 |-INFO in [email protected] - Setting level of logger [com] to INFO
08:47:47,911 |-INFO in [email protected] - Attaching appender named [Console-Appender] to Logger[com]
08:47:47,915 |-INFO in [email protected] - Setting level of logger [ROOT] to INFO
08:47:47,915 |-INFO in [email protected] - Attaching appender named [Console-Appender] to Logger[ROOT]
2017-08-01 08:47:48,072|INFO |main|yippee!
Disconnected from the target VM, address: '127.0.0.1:57421', transport: 'socket'
08:47:48,131 |-INFO in [email protected] - Sleeping for 0 milliseconds
08:47:48,131 |-INFO in [email protected] - Logback context being closed via shutdown hook
谢谢您的回答!我会测试它。关于它的一个小评论,今天最后一个1.1版logback系列的可下载版本是1.1.10。没有1.1.13版本(尚未)。看看[下载dist页面](https://logback.qos.ch/dist/) – guindous
道歉,我在我的回答中提到了1.1.3和1.1.13。正确的版本(即引入shutdownHook的版本)是1.1.3。因此它在1.1.10中可用。而且,由于您使用的是1.1.10,因此无需升级,只需按照我提供的用于在logback.groovy中定义shutdownHook的说明进行操作即可。我已经更新了我的答案。 – glytching