我对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());
}
我现在自定义一个开源项目,而不是自己编写我的所有程序。
因此,不可能在所有java文件中删除e.printStackTrace();
。
据我所知,log4j
用记录器打印的日志可以使用log4j错误级别配置,如info,debug,warn.But如何直接写入控制台或文件?
如何配置log4j不打印异常堆栈跟踪但显示其他信息?有没有办法解决它?
答案 0 :(得分:8)
代码
StringWriter stack = new StringWriter();
e.printStackTrace(new PrintWriter(stack));
logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());
只是Log4j API明显错误使用的一个例子。但是,如果您坚持使用它,除了将日志级别提高到debug
以上并省略整个消息之外,您将无需执行任何操作。
可能可能是截断所有日志消息的方法,这可以在一定程度上缓解您的问题。
答案 1 :(得分:7)
使用记录器#错误
import org.apache.log4j.Logger;
...
Logger log = Logger.getLogger(Locomotive.class);
log.error("your message", exc);
...
答案 2 :(得分:0)
logger.info("Inside add() of Abc class");
logger.error("Error occurred while calculation::::"+errorMessage);