springboot日志没有记录异常问题及解决

 更新时间:2025年02月19日 09:30:07   作者:FlowingRiver  
在Spring Boot项目中,定时任务在服务器上运行时报错但未记录日志,本地运行时控制台能打印报错信息,但日志中无记录,问题出在报错发生在线程池中,通过继承ThreadPoolExecutor并重写afterExecute方法,可以将异常信息记录到日志中

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<>());

日志中就有异常信息了。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Javadoc标签和Javadoc注释规范说明

    Javadoc标签和Javadoc注释规范说明

    这篇文章主要介绍了Javadoc标签和Javadoc注释规范说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • springboot 动态数据源的实现方法(Mybatis+Druid)

    springboot 动态数据源的实现方法(Mybatis+Druid)

    这篇文章主要介绍了springboot 动态数据源的实现方法(Mybatis+Druid),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • SpringBoot启动时执行某些操作的8种方式

    SpringBoot启动时执行某些操作的8种方式

    在真实项目开发过程中,我们经常会需要在程序启动时执行一些特定的业务操作,比如系统预热、系统初始化等,小编为大家介绍 8 种实现方式,需要的朋友可以参考下
    2025-10-10
  • Java中快速排序优化技巧之随机取样、三数取中和插入排序

    Java中快速排序优化技巧之随机取样、三数取中和插入排序

    快速排序是一种常用的基于比较的排序算法,下面这篇文章主要给大家介绍了关于Java中快速排序优化技巧之随机取样、三数取中和插入排序的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • java对ArrayList排序代码示例

    java对ArrayList排序代码示例

    本文通过代码示例给大家介绍java对arraylist排序,代码简洁易懂,感兴趣的朋友一起学习吧
    2015-11-11
  • 实例解析观察者模式及其在Java设计模式开发中的运用

    实例解析观察者模式及其在Java设计模式开发中的运用

    观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己.下面就以实例解析观察者模式及其在Java设计模式开发中的运用
    2016-05-05
  • 详解JAVA 函数式编程

    详解JAVA 函数式编程

    这篇文章主要介绍了JAVA 函数式编程的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 使用Java 8 Lambda表达式将实体映射到DTO的操作

    使用Java 8 Lambda表达式将实体映射到DTO的操作

    这篇文章主要介绍了使用Java 8 Lambda表达式将实体映射到DTO的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • SpringMVC事件监听ApplicationListener实例解析

    SpringMVC事件监听ApplicationListener实例解析

    这篇文章主要介绍了SpringMVC事件监听ApplicationListener实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 关于maven项目中使用BCrypt加密方式

    关于maven项目中使用BCrypt加密方式

    BCrypt是一种基于Blowfish加密算法的密码散列函数,用于安全存储和验证用户密码,它通过引入盐和工作因子增加计算复杂度,有效防止彩虹表攻击和破解,BCrypt具备适应性工作因子、成本参数调整、迭代哈希和密钥扩展等特点,被广泛应用于Web应用程序的安全性设计中
    2024-10-10

最新评论