作者:air12345 | 来源:互联网 | 2023-05-19 07:19
Runtime.getRuntime().addShutdownHook(newThread(newRunnable(){@Overridepublicvoidrun(){for(
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i <100; i++) {
log.error("ShutdownHook-2-" + i);
try {
Thread.sleep(100);
} catch (Exception e) {log.error("addShutdownHook Error", e);}
}
}
}, "shutdown-2"));
kill -pid 之后log的内容没有输出
原因是:log4j也有ShutdownHook的程序,并且提前执行了,导致提前关闭了日志。
log4j可以配置不开启ShutdownHook。不过测试没有成功
可以使用文件输出证明代码有执行
Files.write(Paths.get("/opt/log/a.txt"), ("ShutdownHook-2-11" ).getBytes(), StandardOpenOption.APPEND);