2011-09-06 35 views
18

Lớp học có thể được truy cập từ nhiều chủ đề. Phải logger trong trường hợp này cũng là cuối cùng và tĩnh? Cảm ơn.Nên logger luôn luôn cuối cùng và tĩnh?

+2

Ví dụ về mã có thể giúp làm rõ câu hỏi. – Peter

+0

Đồng thời xem bài đăng này để thảo luận thêm về thực tiễn tốt nhất này http://stackoverflow.com/questions/6653520/why-do-we-declare-loggers-static-final –

+0

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

Trả lời

28

Tất cả các gói ghi nhật ký java chính (java.util.logging, log4j, v.v.) được đồng bộ hóa và an toàn luồng. Mẫu chuẩn của trình ghi nhật ký private final static mỗi lớp là tốt ngay cả khi lớp được gọi từ nhiều luồng.

4

Có trình ghi nhật ký phải là tĩnh và cuối cùng. Cũng tốt hơn là riêng tư. Chỉ cần một cá thể logger cho mỗi lớp và cũng trừ khi bạn sẽ thay đổi tùy chọn log động, tốt hơn hết là làm cho nó trở thành cuối cùng.

Trình ghi là chủ đề an toàn và bạn không phải lo lắng về luồng.

2

Làm cho trình ghi nhật ký cuối cùng và hoặc tĩnh sẽ không ảnh hưởng đến an toàn luồng của việc sử dụng trình ghi nhật ký. Nếu cá thể nhật ký đang được sử dụng từ nhiều luồng hơn là đảm bảo bạn đang sử dụng trình ghi nhật ký an toàn.

Nói chung, trình ghi nhật ký phải là kết quả tĩnh riêng tư nhưng không cho rằng điều này làm cho luồng này an toàn. Hầu hết các khung công tác ghi nhật ký phổ biến là an toàn chỉ vì vậy nếu bạn đang sử dụng một trong các khung công tác này, bạn nên làm tốt.

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