java - 如何将堆栈跟踪发送到 log4j?

标签 java logging log4j stack-trace

假设你捕获了一个异常并在标准输出(比如控制台)上得到以下信息,如果你执行 e.printStackTrace():

java.io.FileNotFoundException: so.txt
        at java.io.FileInputStream.<init>(FileInputStream.java)
        at ExTest.readMyFile(ExTest.java:19)
        at ExTest.main(ExTest.java:7)

现在我想将它发送到一个记录器,比如 log4j,以获得以下信息:

31947 [AWT-EventQueue-0] ERROR Java.io.FileNotFoundException: so.txt
32204 [AWT-EventQueue-0] ERROR    at java.io.FileInputStream.<init>(FileInputStream.java)
32235 [AWT-EventQueue-0] ERROR    at ExTest.readMyFile(ExTest.java:19)
32370 [AWT-EventQueue-0] ERROR    at ExTest.main(ExTest.java:7)

我该怎么做?

try {
   ...
} catch (Exception e) {
    final String s;
    ...  // <-- What goes here?
    log.error( s );
}

最佳答案

您将异常直接传递给记录器,例如

try {
   ...
} catch (Exception e) {
    log.error( "failed!", e );
}

由 log4j 来呈现堆栈跟踪。

关于java - 如何将堆栈跟踪发送到 log4j?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4347797/

相关文章:

java - WeakHashMap 与 HashMap

linux - 如何在文件中捕获 top 命令的输出(对于将死掉的特定进程)

spring - 使用 Spring 注入(inject) Log4J 记录器

java - Play 框架将两个 Play 应用程序合二为一

java - 解析工作日不适用于德语区域

java - RetentionPolicy CLASS 与 RUNTIME

python - 将日志消息格式化为树

c++ - ATL Web 服务日志记录

java - 如何将日志添加到可以动态更改日志级别的java代理

java - 如何将所有日志从 hibernate 和 spring 重定向到 log4j2?