1

我正在尝试发送电子邮件以防我们的项目发生错误。为此,我们使用 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 所做的那样,不同之处在于 %c 从不打印行号而 %l 确实)。

获取堆栈跟踪的正确方法是什么,为什么%l不获取整个堆栈跟踪?

4

1 回答 1

0

%l 用于输出生成日志事件的调用者的位置信息。它不会打印整个堆栈跟踪。您可以在 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);
}
于 2014-11-27T12:40:28.830 回答