2009-07-17 29 views
8

Tại một trong các cài đặt khách hàng của chúng tôi, chúng tôi đã có hàng ngàn lần xuất hiện cùng ngoại lệ. Sau rất nhiều stacktraces đăng nhập tốt (9332) sự xuất hiện của ngoại lệ vẫn được ghi lại, nhưng không có stacktrace. Sau khi khởi động lại quá trình java, cùng một điều: Lần này chúng tôi đã có 17858 stacktraces và sau đó chỉ có sự xuất hiện ngoại lệ chính nó.Tại sao log4j vô hiệu hóa ngăn xếp ngăn xếp sau (rất nhiều) lặp lại của cùng một ngoại lệ?

Có một câu hỏi tương tự here, nhưng không có câu trả lời ...

Có một tính năng log4j hoặc lỗi? (Tôi tin vào điều trước đây, bởi vì tôi thực sự thích, những gì những người apache làm)

Bất kỳ ý tưởng nào?

Trả lời

21

Sử dụng Java 5 trở lên?

Sau đó, bạn đang nhìn thấy:

Trình biên dịch trong máy chủ ảo hiện nay cung cấp đống vết lùi đúng cho tất cả "lạnh" built-in ngoại lệ. Đối với mục đích hiệu suất, khi một ngoại lệ như vậy được ném một vài lần, phương pháp này có thể được biên dịch lại. Sau khi biên dịch lại, trình biên dịch có thể chọn một chiến thuật nhanh hơn bằng cách sử dụng các ngoại lệ preallocated mà không cung cấp một dấu vết ngăn xếp. Để tắt hoàn toàn việc sử dụng ngoại lệ được phân phát, hãy sử dụng cờ mới này: -XX:-OmitStackTraceInFastThrow

Được phép của Java 5 release notes.

+0

Cảm ơn. Điều đó nghe có vẻ như câu trả lời đúng và tôi sẽ kiểm tra lại và sau đó chấp nhận điều này như một câu trả lời đúng. –

+0

Ghi chú phát hành không còn truy cập được nữa, lần chụp lưu trữ cuối cùng tôi tìm thấy là từ [2012-06-27] (http://web.archive.org/web/20120627040457/http://java.sun.com/j2se /1.5.0/relnotes.html). Mặc dù tôi muốn kiểm tra nguồn gốc, báo giá của mục liên quan đã hoàn tất. – vilpan

1

Có vẻ như một tính năng với tôi, ít nhất là nếu dấu vết ngăn xếp thực sự giống hệt nhau. Tại sao bạn muốn làm cho nhật ký của mình lớn hơn (và do đó khó tìm kiếm hơn) mà không nhận thêm bất kỳ thông tin nào? Sẽ kiểm tra tính cấu hình của tính năng này ...

EDIT: Tôi đã xem qua mã log4j và không có dấu vết nào của nó. Điều này sẽ gợi ý rằng câu trả lời của Robert là chính xác. Tính năng VM đẹp IMO :)

+0

Cảm ơn câu trả lời. Tôi không muốn làm cho các tệp nhật ký của mình lớn (và tôi thích tính năng này - ngay cả khi đó là lỗi ...). Vấn đề là, lần đầu tiên tôi nhìn thấy những mục nhập nhật ký đó mà không có dấu vết ngăn xếp (và thậm chí không nghĩ rằng có thể có những người khác) mà không phải là rất hữu ích khi tôi cố gắng tìm lỗi trong mã của tôi. –

Các vấn đề liên quan