Java Exception的日志输出
最近项目中使用多线程,需要将catch到的 Exception 与其他日志信息一起输出,否则日志会比较杂乱不太好准确定位。那么Java Exception到底有哪些信息呢?
Exception 中的方法都是继承 Throwable 类的方法
一般catch到Exception,我们会直接用 e.printStackTrace() 方法输出exception 的完整堆栈信息。但如何取出跟 printStackTrace() 方法相同的输出信息呢?写个例子看一下:
我这边用 org.slf4j.Logger 来记录日志,pom.xml 中引用
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.6.1</version></dependency>
log4j.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"><appender name="console" class="org.apache.log4j.ConsoleAppender"><layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] (%c:%L) - %m%n" /> </layout></appender><root><priority value="info" /><appender-ref ref="console" /></root></log4j:configuration>
示例
public class ExceptionPrintMessageTest {public static final Logger log = LoggerFactory.getLogger(ExceptionPrintMessageTest.class);public static void main(String[] args) {try {ExceptionPrintMessageTest.errorMethod();} catch (Exception e) {log.error("localizaizedMessage : {}", e.getLocalizedMessage());log.error("exception message : {}", e.getMessage());log.error("exception cause : {}", e.getCause());log.error("exception suppressed : {}", e.getSuppressed());//异常输出log.error("exception toString and track space : {}", "\r\n" + e);log.error(ExceptionPrintMessageTest.errorTrackSpace(e));log.error("---------------------------------------------");e.printStackTrace();}}/*** 制造异常的方法*/private static void errorMethod() {String str = null;System.out.println(str.toString());}/*** 输出异常信息* @param e* @return*/private static String errorTrackSpace(Exception e) {StringBuffer sb = new StringBuffer();if (e != null) {for (StackTraceElement element : e.getStackTrace()) {sb.append("\r\n\t").append(element);}}return sb.length() == 0 ? null : sb.toString();}
}
从结果中来看,exception.toString() 和 exception.getTrackSpace() 方法可以完整的获取到 与printTrackSpace() 方法相同的信息。
这与 printTrackSpace() 方法是一致的
Java Exception的日志输出相关推荐
- java:log4j日志输出
获取CLASSPATH下的配置文件.(src下,Build Path下) ResourceBundle rb = ResourceBundle.getBundle("service" ...
- 【Java】log日志输出
一.如果是maven项目 1.pom.xml中加入依赖 <dependency> <groupId>log4j</groupId> <artifactId&g ...
- Java库:Jansi - 彩色日志输出体验
Java库:Jansi - 彩色日志输出体验 环境:JDK8.springboot 依赖库:Jansi Jansi简介:Jansi是一个小型 Java 库,它允许您使用ANSI 转义码来格式化您的控制 ...
- java 打印对象属性 工具类_关于java实现任意对象输出字符串的工具类ObjectUtils用户打印日志、接口调试及监控等...
通过该对象工具类ObjectUtils(参考org.springframework.util.ObjectUtils)实现了类集.数组及基本数据类型转换及字符串输出,常用在日志输出打印.接口联调及对象 ...
- java输出日志_java代码中如何正确使用loggger日志输出
java代码中如何正确使用loggger日志输出 发布时间:2019-06-28作者:spider阅读(2980) 当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统, ...
- 使用Java的代理机制进行日志输出
Spring的AOP是建立在Java的动态代理的基础上的,学习Java动态代理机制有助于循序渐进地理解AOP的思想. 传统的日志输出方法是在每一个业务逻辑方法里编写记录日志的代码,这样,程序中就会有很 ...
- java 某个类 单独输出日志_log4j实现特定功能的日志单独输出到指定的日志文件...
如何实现按需要,使某个功能的日志单独输出到指定的日志文件呢? 其实只要在现有的log4j基础上稍加配置即可实现这一功能. 1.常用配置如下: #Level log4j.rootLogger = deb ...
- linux java程序控制台日志输出
控制台日志输出到nohup.out文件中 nohup java -jar xx.jar>nohup.out 2>&1 & 不保存控制台日志 nohup java -jar ...
- java 使用logback进行日志输出
在java项目中使用logback可以非常方便的进行日志输出,logback的使用方法与log4j非常类似:使用logback所需要的jar包包括: logback-classic-1.0.13.ja ...
- java define 宏_宏定义宏函数(日志输出)define
最常见的就是 #indef __cplusplus 这表示支持C++语法 再如可以定义常量 #define MAX 100 这跟JAVA全局变量有什么区别呢? JAVA的变量是有类型的,这没有类型,这 ...
最新文章
- php 网站内容采集器 Snoopy
- 测试环境搭建流程_案例解析:一个完整的项目测试方案流程,应该是怎么的?...
- 关于MySQL连接Navicat Premium 12失败的解决方法
- 再见乱码:5分钟读懂MySQL字符集设置
- HBase 数据存储结构
- java atomiclong 使用_Java并发AtomicLongArray类
- Django------多表操作
- 计算机视觉算法岗面经,2019秋招资料
- centos下docker无法正常启动检查与解决方法
- 药品质量不合格统计机器人
- 基于R语言的贝叶斯网络模型的实践技术
- 快速入门(完整):Python练手经典实例100个 (让你的Python技能点全亮)
- 模拟电子技术动画-PN结(动画是转的)内容再修改
- 一篇文章了解什么是增长黑客
- mysql远程操作权限(navicat for mysql)
- iCCP: cHRM chunk does not match sRGB
- 因果性与因果模型 | 中国人民大学哲学与认知科学明德讲坛
- C++函数调用方式(_stdcall, _pascal, _cdecl...)总结
- HSV色彩空间和颜色分量范围
- 完了!服务器沦为肉鸡了!排查过程!