springboot 日志没有记录异常
背景
springboot项目,放到服务器上跑,定时任务运行过程中中断,查看日志却发现没有报错。
在本地跑,发现控制台能打印报错信息,而日志也没有记录报错。
经排查,发现是因为报错出现在线程池中,没有在日志中记录。
原先使用线程池:
executorservice executorservice = executors.newfixedthreadpool(15);
解决
新建类继承threadpoolexecutor
,重写afterexecute
方法。
@slf4j public class taskexecutor extends threadpoolexecutor { public taskexecutor(int corepoolsize, int maximumpoolsize, long keepalivetime, timeunit unit, blockingqueue<runnable> workqueue) { super(corepoolsize, maximumpoolsize, keepalivetime, unit, workqueue); } @override protected void afterexecute(runnable r, throwable t) { super.afterexecute(r, t); if (t != null) { log.error(t.getmessage(), t); } } }
使用:
executorservice executorservice = new taskexecutor(10, 15, 0l, timeunit.seconds, new linkedblockingqueue<>());
日志中就有异常信息了。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论