您的位置:首页 > 其它

把e.printStackTrace的堆栈信息打印在log.error()中

2013-03-13 16:08 351 查看
大家都知道,网站在运行的过程中,打印必要的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)里面那样的异常详细信息了。

如果全部把异常详细打印出来,有可能造成日志文件会很大;打印概要信息,可能对分析问题帮助不大。应根据自己的实际情况,选择合适的方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: