java web:如何将未捕获异常的stacktrace重定向到日志文件?

时间:2009-10-21 09:10:47

标签: java logging log4j

我想只将未捕获的异常堆栈跟踪从控制台重定向到日志文件。其余的东西应该像往常一样出现在控制台上。

2 个答案:

答案 0 :(得分:9)

Set一个Thread.UncaughtExceptionHandler打印到所需的文件。 printStackTrace是线程安全的,因此多个线程可以共享相同的PrintStream

答案 1 :(得分:4)

为此创建了一个示例程序,Thanx为 gustafc

public class UncaughtException {
    public static void main(String[] args) {        
        Thread.setDefaultUncaughtExceptionHandler( new Thread.UncaughtExceptionHandler(){
            public void uncaughtException(Thread t, Throwable e) {
                System.out.println("*****Yeah, Caught the Exception*****");
                e.printStackTrace(); // you can use e.printStackTrace ( printstream ps )
            }
        });     

        System.out.println( 2/0 );  // Throw the Exception 
    }
}

输出

  

*****是的,抓住了异常***** java.lang.ArithmeticException:/ by   零点   thread.UncaughtException.main(UncaughtException.java:12)