我对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不打印只有异常堆栈跟踪但显示其他信息?有办法解决吗?
使用记录器#错误
import org.apache.log4j.Logger;
...
Logger log = Logger.getLogger(Locomotive.class);
log.error("your message", exc);
...
代码
StringWriter stack = new StringWriter();
e.printStackTrace(new PrintWriter(stack));
logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());
只是Log4j API使用错误的一个例子.但是,如果您坚持使用它,除了提高上面的日志级别debug并省略整个消息之外,您将无需执行任何操作.
有可能有可能是一种方式截断所有日志消息,这将一定程度上缓解您的问题.