我想只将未捕获的异常堆栈跟踪从控制台重定向到日志文件。其余的东西应该像往常一样出现在控制台上。
答案 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)