7

我对 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。但是直接写入控制台或文件怎么样?

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

4

3 回答 3

8

使用记录器#error

import org.apache.log4j.Logger;

...

Logger log = Logger.getLogger(Locomotive.class);
log.error("your message", exc);

...
于 2012-08-30T11:52:38.707 回答
8

编码

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

只是 Log4j API 明显错误使用的一个例子。debug但是,如果你坚持下去,除了将日志级别提高到上面并省略整个消息之外,你将无能为力。

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

于 2012-08-30T11:57:41.433 回答
0
logger.info("Inside add() of Abc class");
logger.error("Error occurred while calculation::::"+errorMessage);
于 2012-08-30T12:01:47.670 回答