Java Exception的日志输出

Java Exception的日志输出  最近项目中使用多线程,需要将catch到的Exception与其他日志信息一起输出,否则日志会比较杂乱不太好准确定位。那么JavaException到底有哪些信息呢?    Exception中的方法都是继承Throwable类的方法   一般catch到Exception,我们会直接用e.printStackTrace()方法输出exception的完整堆栈信息。但…

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

    最近项目中使用多线程,需要将catch到的 Exception 与其他日志信息一起输出,否则日志会比较杂乱不太好准确定位。那么Java Exception到底有哪些信息呢?

    Exception 中的方法都是继承 Throwable 类的方法

Java Exception的日志输出 

Java Exception的日志输出

    一般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() 方法相同的信息。

Java Exception的日志输出

    这与 printTrackSpace() 方法是一致的

Java Exception的日志输出

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

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

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


相关推荐

  • mysql删除约束

    mysql删除约束1、删除notnull约束altertable表名modify列名类型;2、删除unique约束altertable表名dropindex唯一约束名;3、删除primarykey约束altertable表名dropprimarykey;4、删除foreignkey约束altertable表名dropforeignkey外键名;…

    2022年6月24日
  • 机器学习框架及评估指标详解

    机器学习框架及评估指标详解目录机器学习的步骤train_test_split函数的详解机器学习评估指标分类模型评估指标混淆矩阵ROC曲线利用ROC的其他评估标准Python绘制ROC曲线求解AUC模板代码错误率精度查准率、查全率P-R曲线Python绘制P-R曲线模板代码平衡点(BEP)F1度量Python求解F1_score代码回归模型评估指标均方误差MAE(平均绝对误差)MAPE(平均绝对百分比误差)RMSE(均方根误差)RSquare(

    2022年6月16日
  • 产品配件类目税目分类_HS编码知识:汽车零部件怎么归类?[通俗易懂]

    产品配件类目税目分类_HS编码知识:汽车零部件怎么归类?[通俗易懂]本文以“汽车零部件”为例,介绍了如何对汽车零部件进行分类,找到合适的HS编码。据统计,每辆车约有一万个零件,涉及200多个税号,分布在进出口税号的不同章节。因此,汽车零部件的分类一直是一个大争议。可以说,汽车零部件的分类比较复杂。一、汽车零部件分类的规则与思路虽然“进出口关税”专门设置了87.08的汽车零部件税项,但实际工作中有很多汽车零部件不能归入87.08,如汽车发动机零件,共计500多个,不…

    2022年10月2日
  • Dubbo负载均衡策略实现[通俗易懂]

    Dubbo负载均衡策略实现[通俗易懂]一、dubbo版本说明基于dubbo版本2.6.2讲解二、负载均衡的接口关系@SPI(RandomLoadBalance.NAME)publicinterfaceLoadBalance{@Adaptive(“loadbalance”)<T>Invoker<T>select(List<Invoker<T>>invokers,URLurl,Invocationinvocation)throwsRp…

    2022年7月11日
  • 文件管理学习:从百度网盘搬家onedrive测评「建议收藏」

    文件管理学习:从百度网盘搬家onedrive测评「建议收藏」网上已经有很多多家网盘对比的文章了。由于我平时依赖微软系列比较多,常用office,有自己的微软邮箱,科学上网跟吃饭一样(这克服了网页版被qiang的障碍)。所以最后我选择了onedrive,基于上述前提,搬家就是个一蹴而就的事。微软普通账户只有5G免费,要扩容得花钱至少15/月,然后查到了免费扩容的办法,那就是用edu邮箱注册。学校的edu邮箱终于有了用武之处。。用教育邮箱注册office…

    2022年9月4日
  • C#酒店管理系统_酒店管理系统免费

    C#酒店管理系统_酒店管理系统免费1.酒店管理系统概要c#实现的酒店管理系统,里面包含了数据库文件,简易酒店管理系统源码,采用WinFrom程序设计开发的酒店管理系统;应用到标准的三层技术,多个视图工具控件;功能介绍用户可根据自己的需求入住登记不同类型的房间,同时登记个人基本信息,管理员可通过对不同类型房间的管理及房间信息管理设置不同的类型房间进行增删改查,并对入住客户的信息及点退房信息查询,并改变房间的入住与退房或空房间的状态信息2.数据库设计由于数据库较多,所以暂时不放出来,下面我们看运行截图3.运行截图

    2022年9月24日

发表回复

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

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