我对log4j很新.我不想在我的日志文件中显示异常堆栈跟踪,例如
java.lang.IllegalArgumentException: nodeRef is a mandatory parameter
at org.alfresco.util.ParameterCheck.mandatory(ParameterCheck.java:42)
Run Code Online (Sandbox Code Playgroud)
这些异常通过使用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());
}
Run Code Online (Sandbox Code Playgroud)
我现在正在定制一个开源项目,而不是自己编写我的所有程序.所以不可能删除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);
...
Run Code Online (Sandbox Code Playgroud)
代码
StringWriter stack = new StringWriter();
e.printStackTrace(new PrintWriter(stack));
logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());
Run Code Online (Sandbox Code Playgroud)
只是Log4j API使用错误的一个例子.但是,如果您坚持使用它,除了提高上面的日志级别debug并省略整个消息之外,您将无需执行任何操作.
有可能有可能是一种方式截断所有日志消息,这将一定程度上缓解您的问题.
| 归档时间: |
|
| 查看次数: |
25843 次 |
| 最近记录: |