是否可以在log4j中为stacktrace的每一行加上前缀? [英] Is it possible to prefix every line of a stacktrace in log4j?
本文介绍了是否可以在log4j中为stacktrace的每一行加上前缀?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
写的时候
logger.error("message", exception);
log4j生成消息和完整的堆栈跟踪:
log4j produces the message and the complete stack trace :
Aug 9 06:26:13 10.175.60.14 myPrefix: [error] [TP-Processor114] [my.class.Name] message : exception
at fatherOfException
at fatherof_fatherOfException
at fatherof_fatherof_fatherOfException
...
我的转换模式是
log4j.appender.syslog.layout.ConversionPattern=myPrefix: [%p] [%t] [%c] [%x] - %m%n
因此,是否可以将每行加上myPrefix前缀,如:
So, is it possible to prefix every line with myPrefix, as :
Aug 9 06:26:13 10.175.60.14 myPrefix: [error] [TP-Processor114] [my.class.Name] message : exception
myPrefix at fatherOfException
myPrefix at fatherof_fatherOfException
myPrefix at fatherof_fatherof_fatherOfException
...
当我在myPrefix上登录日志时,看不到堆栈跟踪.我们有许多不同的前缀(每个模块一个)
When I grep my logs on myPrefix, i don't see the stack trace. We have many different prefixes (one per module)
提前谢谢.
推荐答案
子类
Subclass ThrowableRenderer
, for example:
import org.apache.log4j.DefaultThrowableRenderer;
import org.apache.log4j.spi.ThrowableRenderer;
public class LogThrowableRenderer implements ThrowableRenderer {
DefaultThrowableRenderer def = new DefaultThrowableRenderer();
@Override
public String[] doRender(Throwable t) {
String[] temp = def.doRender(t);
for (int i = 0; i < temp.length; i++) {
temp[i] = "myPrefix "+temp[i];
}
return temp;
}
}
添加到您的log4j.properties
:
log4j.throwableRenderer=whatever.package.LogThrowableRenderer
在添加前缀之前,它使用现有的DefaultThrowableRenderer
以熟悉的方式呈现堆栈跟踪,因此它将包括Throwable
类,消息和原因.
This uses the existing DefaultThrowableRenderer
to render the stacktrace in the familiar way before adding the prefix, so it will include the Throwable
class, message, and cause.
这篇关于是否可以在log4j中为stacktrace的每一行加上前缀?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文