Cách tiếp cận đúng để ghi nhật ký cả tin nhắn dân cư và dấu vết ngăn xếp của ngoại lệ là gì?
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
Tôi muốn tạo ra một đầu ra tương tự như thế này:
context info one two three: 1 2 3
java.lang.Exception: something went wrong
stacktrace 0
stacktrace 1
stacktrace ...
phiên bản slf4j 1.6.1
{}
hơn, vấn đề về hương vị ...
toString()
Phương pháp của các đối số có thể tốn kém. Với cú pháp này, chỉ một tham chiếu đến từng đối tượng được truyền và toString()
phương thức chỉ được gọi nếu thông điệp cụ thể thực sự được ghi lại. Các đối tượng được tham chiếu trong một info()
cuộc gọi nhật ký sẽ không có toString()
phương thức được gọi nếu mức nhật ký WARN
cao hơn hoặc cao hơn. Các {}
cú pháp là một lời nhắc nhở cho người dùng rằng đây không phải là một String.format()
hoạt động -like, tức là họ phải vượt qua đối tượng chứ không phải là cơ quan đại diện chuỗi đó.