Java print full StackTrace

我们在编写一些组件时,使用的日志系统有时并不能打印完整的堆栈信息,比如slf4j,log4j,我们在调用log.error("found error ...",e)打印异常时,只打印一行异常信息。我们看下slf4j的源码

 /*** Log an exception (throwable) at the ERROR level with an* accompanying message.** @param msg the message accompanying the exception* @param t   the exception (throwable) to log*/public void error(String msg, Throwable t);

它在打印exception时,只是打印了堆栈当中的第一行Throwable的信息, 而我们想要的是把整个堆栈都打印出来,这时我们会用下面方式打印堆栈信息。

 e.printStackTrace()

这虽然打印了完整的堆栈信息,但它并不会把堆栈信息定向到日志文件中,这时我们就需要利用利用输出流把信息重新定到变量中,然后再送入到日志系统中

/*** 完整的堆栈信息** @param e Exception* @return Full StackTrace*/public static String getStackTrace(Exception e) {StringWriter sw = null;PrintWriter pw = null;try {sw = new StringWriter();pw = new PrintWriter(sw);e.printStackTrace(pw);pw.flush();sw.flush();} finally {if (sw != null) {try {sw.close();} catch (IOException e1) {e1.printStackTrace();}}if (pw != null) {pw.close();}}return sw.toString();}```   然后我们这样调用就解决了这个问题

log.error(“fount error…”, getStackTrace(e))
“`

Java打印完整的堆栈信息相关推荐

  1. jstack-查看Java进程的线程堆栈信息,锁定高消耗资源代码

    jstack主要用来查看某个Java进程内的线程堆栈信息.语法格式如下: jstack [option] pid jstack [option] executable core jstack [opt ...

  2. java windows 取所有任务_Win下,通过Jstack截取Java进程中的堆栈信息

    在Java软件的使用过程中,有时会莫名的出现奇怪的问题.而这些问题常常无法使用日志信息定位,这时我们就需要通过查看进程内部线程的堆栈调用关系来分析问题出在哪里. 举个例子,当我们在做某个操作时,莫名的 ...

  3. linux打印mysql堆栈_第25问:MySQL 崩溃了,打印了一些堆栈信息,怎么读?

    问题 在 09 问中,我们开启了 coredump 功能,在 MySQL 崩溃时获得了有用的 coredump 信息. 那如果没开启 coredump,仅有 error log 中的堆栈信息,我们如何 ...

  4. 使用StackWalker类打印当前运行堆栈信息

    意义:作用在程序log模块或找一些模糊不清的bug,可以精确定位堆栈的运行. 之前一直找这个找不到,从git上找到了StackWalker类分享. StackWalker.cpp #include & ...

  5. golang 打印error的堆栈信息

    众所周知,目前的golang error只关注Error()信息,而不关注它的堆栈路径,对错误的定位大多数通过 log.SetFlags(log.Llongfile| log.LstdFlags)lo ...

  6. java输出钻石_java - 用Java打印钻石形状 - 堆栈内存溢出

    我想在Eclipse的输出控制台上打印网格形状. 基本上,我从用户那里得到一个整数,它是网格单个边框中的星星数. 这里是我到目前为止的代码: import java.util.Scanner; pub ...

  7. python3 打印完整报错信息 以flask 为例

    try: execpt Expection as e: 不能显示较为完整的错误 这时候可以用 import traceback traceback.print_exc()

  8. VC++ 使用StackWalker类打印当前运行堆栈信息

    意义:作用在程序log模块或找一些模糊不清的bug,可以精确定位堆栈的运行. 之前一直找这个找不到,从git上找到了StackWalker类分享. StackWalker.cpp #include & ...

  9. java打印HTTP请求头信息

    public void test(HttpServletRequest request) {Enumeration<String> headerNames = request.getHea ...

最新文章

  1. 《异步处理在分布式系统中的优化作用》学习笔记
  2. Mat对象与它各种用法
  3. R语言编写自定义函数计算R方、使用自助法Bootstrapping估计多元回归模型的R方的置信区间、可视化获得的boot对象、估计单个统计量的置信区间、分别使用分位数法和BCa法
  4. 【实验吧】CTF_Web_简单的SQL注入之1
  5. boost::describe模块宏BOOST_DESCRIBE_PP_NAME的测试程序
  6. React Native 环境配置
  7. Linux开启fileinfo扩展
  8. vue 中indexof_大厂Vue最佳实践总结,提高竞争力!
  9. 1、Python基本对象类型----数字
  10. MYSQL读写性能测试
  11. 转:Java中abstract和interface的区别
  12. python卸载pip_python 怎样卸载pip
  13. OpenFoam编程笔记——starccm网格转openfoam格式
  14. VS编译器中的字符集(多字节和Unicode)的区别
  15. html页面漏斗图,漏斗图 | JShare
  16. 零基础入门—网站建站教程
  17. element table 表格 修改背景为透明并去除边框
  18. 【家庭财务管理系统】
  19. FastStone Capture 8.9 注册机/注册码
  20. speedoffice(Excel)如何进行美化

热门文章

  1. 还在付费使用 XShell?我选择这款超牛逼的 SSH 客户端,完全免费!
  2. j2cache入门使用
  3. 最新YGbook小说网自适应源码 自动采集笔趣阁 附详细图文安装教程
  4. GO语言开发天天生鲜项目第三天 用户模块开发
  5. 用华为手机拍照!要学会这4个功能,随手一拍都是单反大片
  6. windows微信多开,超便捷的使用方式,真正一劳永逸的方法
  7. 中投民生:“巨无霸”上市估值2000亿美金直接超越茅台
  8. 300最不常用的springboot计算机毕业设计题目汇总,总有你需要用到的
  9. [C语言]指针之数组逆序函数:编写函数invert,将数组中的n个整数按相反顺序存放,要求用指针变量作为函数形参,并用指针的方法遍历该数组。在main函数中输入n个整数,存入数组a中;然后调用上述函
  10. iOS 磁场传感器的应用 Swift CoreMotion使用