码迷,mamicode.com
首页 > 其他好文 > 详细

e.printStackTrace()打印在哪里以及如何e.printStackTrace()的内容打印在日志中

时间:2018-07-04 20:13:13      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:import   lan   sage   trace   rac   stat   位置   ati   log4   

1、e.printStackTrace()打印在哪里

在catch中的e.printStackTrace()将打印到控制台

2、e.printStackTrace()打印的内容是什么

如下代码:

import org.apache.logging.log4j.Logger;

public class ExceptionTest {
    private static final Logger logger=LogManager.getLogger(); 
    public void  test() {
        try {
            int i=1/0;
            
        }catch(Exception e){    
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        ExceptionTest test= new ExceptionTest();
        test.test();
        
    }
    
}

输出结果如下:

java.lang.ArithmeticException: / by zero
    at myProject.ExceptionTest.test(ExceptionTest.java:10)
    at myProject.ExceptionTest.main(ExceptionTest.java:18)

可见,e.printStackTrace()打印了错误的具体信息,即这个错误出现的位置,便于查找错误源

3、如果将e.printStackTrace()的信息打印在日志里应该怎么做呢?

见如下代码:

package myProject;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class ExceptionTest {
    private static final Logger logger=LogManager.getLogger(); 
    public void  test() {
        try {
            int i=1/0;
            
        }catch(Exception e){    
            logger.error(e);
        }
    }
    public static void main(String[] args) {
        ExceptionTest test= new ExceptionTest();
        test.test();
        
    }
    
}

用logger.error(e);打印日志,输出结果如下:

19:17:39.753 [main] ERROR myProject.ExceptionTest - java.lang.ArithmeticException: / by zero

可见,用这种方法打印的日志,只有大概的错误信息,并没有指出报错的代码位置,不便于查找错误。用logger.error(e.getMessage());也是输出这种大概的错误信息。

再见如下代码:

package myProject;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class ExceptionTest {
    private static final Logger logger=LogManager.getLogger(); 
    public void  test() {
        try {
            int i=1/0;
            
        }catch(Exception e){    
            logger.error("ExceptionTest Exception:",e);
        }
    }
    public static void main(String[] args) {
        ExceptionTest test= new ExceptionTest();
        test.test();
        
    }
    
}

logger.error("ExceptionTest Exception:",e);,则输出结果如下:

 

19:20:32.948 [main] ERROR myProject.ExceptionTest - ExceptionTest Exception:
java.lang.ArithmeticException: / by zero
    at myProject.ExceptionTest.test(ExceptionTest.java:10) [classes/:?]
    at myProject.ExceptionTest.main(ExceptionTest.java:18) [classes/:?]

 

这和e.printStackTrace()打印的内容大致是相同的。

 

e.printStackTrace()打印在哪里以及如何e.printStackTrace()的内容打印在日志中

标签:import   lan   sage   trace   rac   stat   位置   ati   log4   

原文地址:https://www.cnblogs.com/BonnieWss/p/9264957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!