Tôi đã làm việc với một codebase của một công ty có chính sách viết nhiều lần ghi nhật ký. Vì vậy, khá nhiều mỗi phương pháp có một đoạn mã mà bắt đầu như thế này:Sử dụng chú thích để ghi nhật ký theo dõi
String LOG_METHOD = "nameOfMethod(String,List<Long>):void";
if(logger.isTraceEnabled()) {
Object[] params = new Object[] { string, list };
logger.trace(CompanyMessages.newMethodInstanceMessage(this, LOG_METHOD, params));
}
và kết thúc như thế này (hoặc trong một finally
-clause hoặc chỉ ở phần cuối của phương pháp này:
if(logger.isTraceEnabled()) {
logger.trace(CompanyMessages.leaveMethodInstanceMessage(this, LOG_METHOD));
}
Có Điều này làm lộn xộn mã và các lập trình viên khác liên tục làm rối tung nó bằng cách giải thích riêng của họ mà không sử dụng lớp CompanyMessages
cụ thể cần thiết để định dạng các thông điệp thành được đọc bởi các công cụ giám sát. Vì vậy, tôi đang tìm kiếm một cách để loại bỏ tất cả mã ở trên và chỉ cung cấp tất cả các phương pháp cần ghi nhật ký-ghi nhật ký với chú thích như: @LogBefore('logLevel')
& @LogAfter('logLevel')
.
Lý do tôi chọn giải pháp này là làm cho nó để các nhà phát triển khác không phải học bất cứ điều gì mới nhưng để sử dụng chú thích thay vì mã. Tôi đang làm việc trong một môi trường máy chủ, trong đó chúng tôi triển khai hàng trăm ứng dụng web và hàng tá nhà phát triển. Vì vậy, tôi đã tìm kiếm một cách để thực hiện điều này trong một ứng dụng web mà không cần thêm nhiều mã hóa hoặc các thư viện lớn bổ sung. Điều này có nghĩa là tôi đang tìm một triển khai AOP nhỏ, ổn định bằng cách sử dụng các chú thích tương tự như những gì tôi đã đề xuất, dễ cấu hình trong mỗi ứng dụng web. Hiệu suất cũng rất quan trọng. Ví dụ đơn giản nhất để thực hiện điều này với AOP là gì?
Chỉnh sửa: Tôi đã tìm thấy something very similar với những gì tôi đang tìm kiếm, nhưng điều này có một số vấn đề. Tất cả các lớp cần đăng nhập phải được cấu hình, vốn sẽ tốn nhiều tài nguyên hơn là chỉ sử dụng chú thích. Cấu hình mùa xuân <aop:aspectj-autoproxy/>
có khắc phục được điều đó không?
Cảm ơn, điều này khiến tôi nhận ra rằng quan điểm của tôi về hoạt động của chú thích là không hoàn thiện. – mahler