Tôi đang tìm cách bao gồm __LINE__
dưới dạng hằng số biên dịch trong các thư đã xuất.__LINE__ tương đương với Java?
Các giải pháp khác nhau dường như tồn tại, nhưng với hình phạt thời gian chạy lớn như được đề xuất trong __LINE__
in JS và __LINE__
in C#. Chúng thường dựa trên một đối tượng thời gian chạy là StackFrame
là log4j.
Sử dụng khả năng bật/tắt log4j trên cơ sở cần thiết không phải là tùy chọn vì thường khi xảy ra lỗi, quá muộn để bật số dòng và mã nội tuyến dường như không có bất kỳ số dòng nào nữa không. . nó sẽ có thể để một trong hai:
- Pre-quá trình các file nguồn java trước khi biên dịch, lý tưởng với một cái gì đó tích hợp với Eclipse , vì vậy nó có thể được thử nghiệm trên nền tảng developpement cũng có.
- Có thể trước khi xử lý lớp lúc tải. Chi phí đầu vào sau đó sẽ không đáng kể bằng cách khấu hao.
1. Trên thực tế tôi sử dụng một hack xấu xí: gọi một tiền xử lý tùy chỉnh ngay sau khi kiểm tra trên máy chủ xây dựng thông qua thủ đoạn ANT
Chỉ vì sự tò mò của tôi: Tại sao bạn cần số dòng trong nhật ký? Khi một lỗi xảy ra, bạn có stacktrace hoàn chỉnh, cho biết số dòng ... – romaintaz
Đôi khi trong trường hợp ngoại lệ, thay vì số dòng tôi có một cái gì đó như 'Util.java (Inlined Compiled Code)'. Và đôi khi tôi không có bất kỳ ngoại lệ nào, chỉ cần đăng nhập thông tin: "ở đây", "ở đây", tôi không muốn bận tâm khi có thông báo duy nhất (số dòng làm cho chúng độc đáo) –
JVM sẽ có thể xử lý tình huống đó. Bạn sử dụng phiên bản Java nào? –