Java e.printStackTrace()异常信息怎么打印到log日志中

Java e.printStackTrace()异常信息怎么打印到log日志中Java e.printStackTrace()异常信息怎么打印到log日志中

大家好,又见面了,我是你们的朋友全栈君。

最近工作遇到一个问题是测试环境服务器上的日志打印不出错误出现在第几行,尤其是在出现反射或代理等的情况下使用e.getStackTrace方法不能打印出错误类型和错误行数。但是在控制台使用e.printStackTrace()却能打印出错误类型或错误行数,如空指针。

但是e.printStackTrace()方法只能使用在控制台中,那么我就想怎么把e.printStackeTrace的栈信息打印到日志中呢?

百度了一圈最后找到一位博友的方法很好:https://blog.csdn.net/hongweigg/article/details/18313461

ByteArrayOutputStream baos = new ByteArrayOutputStream();		
e.printStackTrace(new PrintStream(baos));
String exception = baos.toString();	
System.out.println("baos:" + exception);

这里使用了文件流,等同于把e.printStackTrace()的内容打印到一个文件中,然后再把内容付给一个字符串,最后就可以把logger.error(exception)把错误内容打印到日志上了。

这位网友也说明:

Exception.printStrackTrace()中虽然有出错点信息,但都打到控制台上去了,Exception.getStackTrace(),并不能获得出错点的提示信息。

        一个应对办法就是捕获e.printStrackTrace()输出, 使用e.printStackTrace(PrintStream)方法,将异常栈信息先输出到ByteOutputStream ,然后再将ByteOutputStream 转换为字符串,就获得了异常的完整输出。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106033.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • QT QTcpSocket「建议收藏」

    QT QTcpSocket「建议收藏」QTcpSocket类提供TCP套接字。TCP(传输控制协议)是一种可靠的、面向流的、面向连接的传输协议。它特别适合于数据的连续传输。QTcpSocket是QAbstractSocket的一个方便的子类,它允许您建立TCP连接和传输数据流。有关详细信息,请参见QAbstractSocket文档。注意:TCP套接字不能在QIODevice::Unbuffered模式下打开。请参见QTcpServer、QUdpSocket、QNetworkAccessManager、Fortune服务器示例、Fortu

    2025年10月17日
    4
  • androidstudio 优化gradle编译效率[通俗易懂]

    androidstudio 优化gradle编译效率

    2022年1月24日
    277
  • 单向链表之删除节点(C语言实现)「建议收藏」

    单向链表之删除节点(C语言实现)「建议收藏」链表的创建查看删除节点就是将某一节点从链中摘除。将待删节点与其前一节点解除联系(中间或尾部)或本阶段删除(头节点),并释放相应空间(free)。删除的第一步是找到要删除的节点,同链表查找,如果找不到或链表为空,提示未找到,找到后根据情况删除此节点。删除节点两种情况:第一个节点,后面节点。步骤:1、链表为空:不用删除2、链表不为空:先循环找要删除的节点1)找到了1>找

    2025年8月5日
    2
  • datax(16):源码解读AbstractReporter

    datax(16):源码解读AbstractReporter之前介绍了通信类communication,容器类container,communication的收集类collector,今天再看一个报告类Reporter;一、概述AbstractReporter主要作用:Reporter的主要功能是将收集到的信息上报给上级主要方法:reportTGCommunication(汇报TG的communication信息给上级),reportJobCommunication(汇报job的communication信息给上级)二、族谱族谱里面目前只有父子.

    2022年5月16日
    43
  • 产品名称:    免费主机

    产品名称:    免费主机

    2021年9月20日
    48
  • nginx反向代理配置域名映射

    nginx反向代理配置域名映射nginx反向代理配置域名映射

    2022年4月23日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号