小编典典

我不确定这是否是您要寻找的,但是有一个终止线程的异常处理程序。它是线程异常未明确捕获的任何异常的处理程序。

默认“未捕获的异常处理程序”只是调用printStackTrace()上Throwable打印的堆栈跟踪System.err。但是,您可以将其替换为自己的UncaughtExceptionHandler日志,将异常记录到log4j:

class Log4jBackstop implements Thread.UncaughtExceptionHandler {

private static Logger log = Logger.getLogger(Log4jBackstop.class);

public void uncaughtException(Thread t, Throwable ex) {

log.error("Uncaught exception in thread: " + t.getName(), ex);

}

}

如果使用的Runnable对象是执行程序框架,则该对象的线程可能具有自己的catch块,这些块可以防止异常到达未捕获的异常处理程序。如果您想在Runtime那里捕获异常,一种方法是将每个任务包装在日志记录包装器中,如下所示:

class Log4jWrapper {

private final Logger log;

private final Runnable target;

Log4jWrapper(Logger log, Runnable target) {

this.log = Objects.requireNonNull(log);

this.target = Objects.requireNonNull(target);

}

public void run() {

try {

target.run();

} catch(RuntimeException ex) {

log.error("Uncaught exception.", ex);

throw ex;

}

}

}

...

Runnable realTask = ...;

executor.submit(new Log4jWrapper(Logger.getLogger(Whatever.class), realTask));

2020-06-16

java运行异常日志_使用log4j记录Java中的运行时异常相关推荐

  1. java去掉mongodb日志_如何禁用mongoDB java驱动程序日志记录?

    我试图禁用mongo- java-driver-3.0.0的日志输出. 我试图在我的应用程序开始之前设置它们,然后加载mongo驱动程序,但它没有帮助. // Enable MongoDB loggi ...

  2. java 打开gc日志_在运行时打开GC日志记录

    java 打开gc日志 总是有下一个JVM表现不佳. 而且,您内心深知,如果您只有少数启动选项可以公开一些有关正在发生的事情的信息,那么您可能就有机会真正修复该死的东西. 但是不,您需要的标志( -X ...

  3. java 统一日志_基于log4j实现统一日志管理

    背景: 一般操作系统级的告警有相关的软件,但我们应用级日志往往无法统一监控.分析.因为最近的项目是比较大的一个平台,有七.八个子系统,weblogic域也有三.四个.如果用户自身能够实时监控到应用级致 ...

  4. java高并发日志_高并发下log4j的性能瓶颈

    开篇 近期由于业务需要进行业务迁移,期间因为误设置log4j的日志级别,导致系统性能整体下降,具体表现在QPS下降明显,系统RT上升.迁移期间由于各类系统环境较原来有较大差别,因为在排查过程中也走了一 ...

  5. java @valid 密码不一致_一个成熟的Java项目如何优雅地处理异常

    (一)概述 异常处理是一个系统最重要的环节,当一个项目变得很大的时候,异常处理和日志系统能让你快速定位到问题.对于用户或者接口调用者而言,优雅的异常处理可以让调用者快速知道问题所在.本文将介绍如何优雅 ...

  6. 实现打印异常日志_老生常谈SpringAop日志收集与处理做的工具包

    场景 : 使用Spring Aop拦截参数日志目前大部分做法都基本上大同小异,不想日后每个项目工程都写一份这样的Aop拦截处理日志的代码,甚至代码侵入. 我想知道一些相对重要的请求方法的请求参数,响应 ...

  7. java docx 内存溢出_第2章 Java内存区域与内存溢出异常

    本章主要介绍了Java的内存区域以及会触发对应区域内存溢出的触发条件及表现结果.同时还对java对象的内存布局进行了简单的讲解. 2.2 运行时数据区域: 比较直观的一张图来表示: Java虚拟机运行 ...

  8. java技术指标_使用 Micrometer 记录 Java 应用性能指标

    使用 Micrometer 记录 Java 应用性能指标 成 富 2019 年 2 月 13 日发布 运行良好的应用离不开对性能指标的收集.这些性能指标可以有效地对生产系统的各方面行为进行监控,帮助运 ...

  9. java 异常信息_优雅的异常处理 -- Java中的异常

    处理异常自己处理 try-catch抛出让别人处理 throws 获得异常信息 直接打印异常对象 通过异常对象调用getMessage()方法获得 通过异常对象调用printStackTrace()方 ...

最新文章

  1. SIP中的SDP offer/answer交换初探
  2. 波卡链Substrate (7)Grandpa协议四“责任安全机制”
  3. idea 编译显示source1.3不支持泛型(请使用source5或更高版本)
  4. Jeecg引领企业开发潮流,开启插件开发时代,微信企业号插件(jeecg-p3-biz-qywx)首次发布
  5. 天池-街景字符编码识别5-模型训练与验证
  6. python 生成pdf页面大小_使用具有自定义大小页面和最佳图像分辨率的Reportlab生成PDF...
  7. 肥水不流外人田!Model X被选为SpaceX首次载人发射任务专用车
  8. 审计计算机考试报名,审计业务考试计算机(5页)-原创力文档
  9. SQL 错误代码汇总
  10. H5 新特性之 fileReader 实现本地图片视频资源的预览
  11. 配置LACP模式链路聚合
  12. 相亲交友小程序,案例:情深深之恋
  13. Java读取文件夹下的文件并进行处理
  14. 对立志成为DBA的人的几点建议
  15. C语言——整型整除,浮点数整除
  16. linux malloc错误,如何规避GCC中“尝试使用中毒的malloc / calloc”错误?
  17. 如何在 JavaScript 中获取当前日期?
  18. office出现应用程序错误无法正常启动(0xc0000142)
  19. 在一个数组中找到几个数之和为某个数字
  20. 如何查看yum 安装的软件路径(不要再忘了)

热门文章

  1. 23-Ubuntu-文件和目录命令-查看文件内容-more 和 cat
  2. JavaScript tab页
  3. C语言中的运算和运算符
  4. [leetcode]Next Greater Element
  5. Oracle 10g新特性
  6. 谈谈Python和其他语言的区别
  7. win10+mysql8.0安装
  8. (转)Spring Boot(五):Spring Boot Jpa 的使用
  9. 说说windows10自带浏览器Edge的好与不好
  10. 在maven项目结构下对于Resources目录下文件的存取