Tôi luôn sử dụng các mô hình sau đây để xây dựng (SLF4J) logger:Chi phí của việc tạo nhật ký SLF4J trong bối cảnh tĩnh và không tĩnh là gì?
private static final Logger log = LoggerFactory.getLogger(MyClass.class);
này đã làm việc cho đến nay, nhưng tôi đã tự hỏi về static
bối cảnh tại một số điểm và nhu cầu để vượt qua trong lớp bê tông đen tất cả các thời gian thay vì chỉ sử dụng một logger không tĩnh như
private final Logger log = LoggerFactory.getLogger(getClass());
này đã cơ bản được yêu cầu (và trả lời) trước đây để log4j
Should logger be private static or not
và đây
Should be logger always final and static?
Tôi nhận ra final
về cơ bản là bắt buộc, vì vậy tôi lại tự hỏi cao bao nhiêu chi phí của việc sử dụng của SLF4J trong bối cảnh không tĩnh thực sự là.
Q:
Có đáng kể thực tế overhead của việc sử dụng
private final Logger log = LoggerFactory.getLogger(getClass());
qua
private static final Logger log = LoggerFactory.getLogger(MyClass.class);
ở mức trung bình (web) ứng dụng ? (Không cần phải "thảo luận" cao cấp, nặng tải webapps đây)
Lưu ý, tôi cuối cùng lên kế hoạch để sử dụng một cách tiếp cận thậm chí đẹp hơn bằng CDI để có được một logger SLF4J như
@Inject private final Logger log;
như được mô tả ở đây http://www.seamframework.org/Weld/PortableExtensionsPackage#H-TtLoggerttInjection, nhưng trước tiên tôi cần phải biết về bộ nhớ đệm của trình ghi nhật ký.
câu hỏi Sub: là nó thậm chí có thể sử dụng ?:
@Inject private static final Logger log;
(chỉ mới bắt đầu với CDI phải trung thực)
Lưu ý rằng nếu bạn sử dụng 'getClass()' thì tên/danh mục của trình ghi nhật ký có thể thay đổi bất ngờ khi có các lớp con. – Thilo
Cảm ơn. Tôi thực sự đang tìm kiếm một "mô hình tạo logger" ở đây, nhưng tôi phải thừa nhận rằng tôi không chắc chắn 100% về trường hợp sử dụng của riêng mình, đó là liệu tôi có muốn các lớp con có thể có được logger riêng của họ hay không để sử dụng lại từ một lớp học được chia sẻ. : -/ – Kawu
bạn có thể loại bỏ biến này nếu bạn sử dụng [jcabi-log] (http://www.jcabi.com/jcabi-log/), một trình bao bọc tĩnh xung quanh slf4j – yegor256