我正在尝试发送电子邮件,以防我们的项目发生错误。为此,我们使用Log4j的SMTPAppender
。我正在开发模式下运行我的项目,并尝试使用ConversionPattern
中的SMTPAppender
跟踪来获取错误的完整堆栈跟踪:
<param name="ConversionPattern"
value="[%d{ISO8601}] [%t] [%5p] [%c ] %n %m %l %X{config}"/>
我抛出的错误如下:
try {
throw new Exception(" To get the MDC values !!!");
} catch (Exception e)
{
LOGGER.error(" To get the MDC values !!!", e);
}
%m
被文字To get the MDC values !!!
取代,但%l
(小写L
)正在打印完全限定的类名调用者使用行号发出日志记录请求(就像%c do一样,但有一点不同,%c从不打印行号而%l会这样做)。
获取堆栈跟踪的正确方法是什么,以及为什么%l
没有得到整个堆栈跟踪?
答案 0 :(得分:0)
%l用于输出生成日志记录事件的调用者的位置信息。 它是snot打印整个堆栈跟踪。 你可以在catch块中添加这些代码行。
catch (Exception e) {
CharArrayWriter cw = new CharArrayWriter();
PrintWriter w = new PrintWriter(cw);
e.printStackTrace(w);
w.close();
String trace = cw.toString();
LOGGER.error(" To get the MDC values !!!",trace);
}