Tôi có một chức năng chung mà in trường hợp ngoại lệ (sử dụng log4j):Làm thế nào để hiển thị dấu vết ngăn xếp trên một ngoại lệ bị bắt?
private void _showErrorMessage(Exception e) {
log.error(e.getClass() + ": " + e.getMessage() + ": " + e.getCause() + "\n" + e.getStackTrace().toString());
}
Thay vì nhìn thấy những vết đống tôi nhìn thấy:
[Ljava.lang.StackTraceElement;@49af7e68
Làm thế nào tôi có thể xem stack trace của ngoại lệ đúng không?
cập nhật
log.error (e) < - hiển thị lỗi, nhưng không hiển thị stack trace
Gọi 'log.error (e)' trong log4j gọi phiên bản sai của phương thức (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Category.html#error% 28java.lang.Object% 29). JavaDoc cho phương thức này thậm chí còn đề cập đến thực tế đó: "CẢNH BÁO Lưu ý rằng việc chuyển một Throwable sang phương thức này sẽ in tên của Throwable nhưng không có dấu vết stack. Để in dấu vết stack, hãy sử dụng biểu mẫu lỗi (Object, Throwable)." –
call log.error (e, e) sẽ thực hiện công việc;) – Guillaume