Đó là một chủ đề khá cũ, dù sao đi nữa, hai xu của tôi, bởi vì tôi cũng thích sử dụng java.util.logging.Logger` trong các dự án của tôi khi đủ.
Lambdas làm cho bản mẫu này mở rộng cho nhiều thông số tùy chỉnh nhiều hoặc ít lỗi thời, trừ khi bạn hưởng lợi từ việc sử dụng lại toàn bộ ứng dụng của nó. Trong các kịch bản đơn giản của tôi, thông điệp tường trình được điều chỉnh theo phần mã được chèn vào, vì vậy, String.format()
thường dễ dàng hơn và linh hoạt hơn nhiều.
Trước Java 8 và lambdas, Formatter
là khả năng duy nhất trì hoãn việc xây dựng thư. Chỉ có thay thế là, để xây dựng thông báo đăng nhập trước trước khi kiểm tra loggable
dựa trên Cấp độ đã diễn ra.
Với Java 8 lambdas, định dạng Chuỗi có thể được hoãn lại sau khi kiểm tra loggable
, nhưng vẫn có quyền truy cập vào ngữ cảnh phương thức gốc. Nhược điểm nhỏ duy nhất là, tất cả các trường truy cập cần phải là cuối cùng, do các hạn chế lambda.
Dưới đây là một đoạn khá đơn giản:
final String val1 = "lambda expression log message";
final Level level = Level.INFO;
Logger.getGlobal().log(level,() ->
String.format("Hello, I'm a %s, evaluated after %s loggable check.", val1, level)
);
Logger.getGlobal().log(level, new RuntimeException(),() ->
String.format("Hello, I'm a %s with a stack trace, evaluated after %s loggable check.", val1, level)
);
Hope this helps một số bạn cũng muốn sử dụng được xây dựng trong khai thác gỗ :-)
Chúc mừng Ben
Nguồn
2016-06-28 10:14:03
Cân nhắc Log4J http://logging.apache.org/log4j/2.x/ – Mirco
@ verbose-mode Tại sao? java util logging thực hiện tất cả những gì cần thiết và đơn giản hơn để sử dụng. Theo như tôi thấy nó gợi ý của bạn phá vỡ nguyên tắc KISS (Keep it Simple S…). – Martin