加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 转换e.printStackTrace()以改为使用log4j

发布时间:2020-12-14 16:22:34 所属栏目:Java 来源:网络整理
导读:我对log4j很新.我不想在我的日志文件中显示异常堆栈跟踪,例如 java.lang.IllegalArgumentException: nodeRef is a mandatory parameterat org.alfresco.util.ParameterCheck.mandatory(ParameterCheck.java:42) 这些异常通过使用e.printStackTrace()直接写入
我对log4j很新.我不想在我的日志文件中显示异常堆栈跟踪,例如
java.lang.IllegalArgumentException: nodeRef is a mandatory parameter
at org.alfresco.util.ParameterCheck.mandatory(ParameterCheck.java:42)

这些异常通过使用e.printStackTrace()直接写入控制台

try {
    // something
} catch(Exception e) {
    StringWriter stack = new StringWriter();
    e.printStackTrace(new PrintWriter(stack));
    logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());
}

我现在正在定制一个开源项目,而不是自己编写我的所有程序.
所以不可能删除e.printStackTrace();在所有的java文件中.

据我所知,log4j用logger打印的日志可以通过使用log4j错误级别来配置,例如info,debug,warn.But如何直接写入控制台或文件?

如何配置log4j不打印只有异常堆栈跟踪但显示其他信息?有办法解决吗?

解决方法

代码
StringWriter stack = new StringWriter();
e.printStackTrace(new PrintWriter(stack));
logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());

只是Log4j API使用错误的一个例子.但是,如果您坚持使用它,除了将日志级别提高到调试之外并且省略整个消息之外,您将无需执行任何操作.

可能有一种方法可以截断所有日志消息,这可以在一定程度上缓解您的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读