Có cách nào trong Java tự động lấy số dòng hiện tại thông qua phản xạ hoặc một số API tuyệt vời không? Cũng giống như khi ngoại lệ xảy ra, số dòng được in ra trong dấu vết ngăn xếp như thế này:Tự động lấy số dòng hiện tại
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
Bây giờ có cách in hoặc ghi như trong mã dưới đây không?
log.error("Error in: " + this.getClass.getName() + "at line #"+ this.getClass.getActualLine());
Bạn có thể hỏi, tại sao tôi không chỉ cần in số dòng? Cũng vì mã có thể bị xóa hoặc được thêm vào trước khi gọi phương thức log.error() cụ thể.
Không PatternLayout ghi nhật ký API có tiện dụng cho việc này không? – sadhu
Bạn có thể tạo ra một 'mới Throwable' và truy cập các yếu tố theo dõi stack. Xem http://stackoverflow.com/questions/115008/how-can-we-print-line-numbers-to-the-log-in-java –
@Andreas: bạn không cần một 'Throwable': [' Thread.getStackTrace() '] (http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#getStackTrace()) là đủ. –