springboot日志沒有記錄異常問題及解決
springboot 日志沒有記錄異常
背景
springboot項(xiàng)目,放到服務(wù)器上跑,定時(shí)任務(wù)運(yùn)行過程中中斷,查看日志卻發(fā)現(xiàn)沒有報(bào)錯(cuò)。
在本地跑,發(fā)現(xiàn)控制臺(tái)能打印報(bào)錯(cuò)信息,而日志也沒有記錄報(bào)錯(cuò)。
經(jīng)排查,發(fā)現(xiàn)是因?yàn)閳?bào)錯(cuò)出現(xiàn)在線程池中,沒有在日志中記錄。
原先使用線程池:
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<>());
日志中就有異常信息了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?Validation實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)的示例
Spring?Validation其實(shí)就是對(duì)Hibernate?Validator進(jìn)一步的封裝,方便在Spring中使用,這篇文章主要介紹了Spring?Validation實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)的示例,需要的朋友可以參考下2023-03-03解析spring-security權(quán)限控制和校驗(yàn)的問題
這篇文章主要介紹了解析spring-security權(quán)限控制和校驗(yàn)的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Java純代碼實(shí)現(xiàn)導(dǎo)出PDF功能
在項(xiàng)目開發(fā)中,產(chǎn)品的需求越來越奇葩啦,開始文件下載都是下載為excel的,做著做著需求竟然變了,要求能導(dǎo)出pdf,本文就來和大家分享一下Java實(shí)現(xiàn)導(dǎo)出PDF的常用方法吧2023-07-07@Valid 校驗(yàn)無效,BindingResult未獲得錯(cuò)誤的解決
這篇文章主要介紹了@Valid 校驗(yàn)無效,BindingResult未獲得錯(cuò)誤的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10