zoukankan      html  css  js  c++  java
  • log4j打印堆栈信息

    原文地址:https://blog.csdn.net/xianyu_0418/article/details/6043174

    大家都知道,网站在运行的过程中,打印必要的log对记录网站的运行情况、从而分析程序问题是很重要的。在Java工程里面配置好log4j之后就可以进行log记录了。
    log分为几个级别:error、info、debug、fatal,应根据网站的具体情况,配置合适的level。
    例子:
    log.error("libzone.cn exception:链接数据库出错")
    log.info("libzone.cn exception:链接数据库出错")
    log.debug("libzone.cn exception:链接数据库出错")
    log.fatal("libzone.cn exception:链接数据库出错")。

    有时候,我们有必要把出错时候的异常信息打印进log里面,例子:
            }catch (Exception e){
                e.printStackTrace();
                log.error("libzone.cn exception:" + e);
                //log.info("libzone.cn exception:" + e);
                //log.debug("libzone.cn exception:" + e);
                //log.fatal("libzone.cn exception:" + e);
            }
    以这种方式,指的是以"libzone.cn exception:" + e这种方式打印异常的时候,只会打印一个异常的概要信息,例子如下:
    libzone.cn exception:com.BusinessException: java.lang.NullPointerException

    有时候,这样的一个概要性的异常信息对于分析问题帮助不大,有可能我们想把异常的堆栈具体信息打印在log里面,那怎么在log.error()里面把e.printStackTrace的堆栈具体信息打印出来呢?这时候我们要以log.XXX(Object obj,Thowable e)这种方式,也就是要将异常对象作为第二个参数传递到log的方法中。例子如下:

           }catch (Exception e){
                e.printStackTrace();
                log.error("libzone.cn exception:", e);
                //log.info("libzone.cn exception:", e);
                //log.debug("libzone.cn exception:", e);
                //log.fatal("libzone.cn exception:", e);
            }
    这样,我们就可以在log日志里面看到类似于控制台(console)里面那样的异常详细信息了。
    如果全部把异常详细打印出来,有可能造成日志文件会很大;打印概要信息,可能对分析问题帮助不大。应根据自己的实际情况,选择合适的方式。

    package com.cvicse.ump.ulogger;
    
    
    import javax.annotation.PostConstruct;
    
    import org.apache.log4j.Logger;
    import org.junit.Test;
    
    public class LoggerTest {
        
         Logger logger = Logger.getLogger("logTest");
    
        @Test
        @PostConstruct
        public void test() {
            
            logger.debug(0 + "----Log.debug----");
            logger.info(1 + "----Log.Info----");
            logger.warn(2 + "----Log.warn----");
            logger.error(3 + "----Log.error----");
            
            int b = 0;
            try {
                b = 3/0;
            } catch (Exception e) {
                // TODO Auto-generated catch block
                logger.error("除数不能为0", e);
            }
            logger.debug(b);
        }
    
    }
  • 相关阅读:
    消除醉酒痛苦的九种食品
    要成功,就马上准备有所付出吧!这就是每天你应该养成的习惯。
    赞美
    人的一生究竟需要多少钱?
    试试看
    ubuntu 环境变量PATH的修改[转]
    Ubuntu netsnmp安装
    ubuntu终止进程的方法
    Linux(ubuntu)下MySQL整个数据库的备份与还原 Linux下MySQL整个数据库的备份与还原[转]
    Ubuntu防火墙 UFW 设置
  • 原文地址:https://www.cnblogs.com/dyh004/p/9706881.html
Copyright © 2011-2022 走看看