Các điểm đánh dấu trong khung ghi nhật ký Java là gì và lý do để sử dụng chúng là gì?


110

Lần đầu tiên tôi nghe về điểm đánh dấu khi đọc:

http://slf4j.org/faq.html

Tôi kiểm tra các phương thức có sẵn cho đối tượng Logger :

và tìm thấy các giao diện:

Thông tin chuyên sâu hơn mà tôi nhận được từ:

nhưng vẫn còn nhầm lẫn ... Lưu ý rằng tôi hỏi tại sao chứ không phải cách sử dụng chúng, vì vậy đây không phải là bản sao của:

CẬP NHẬT Có vẻ như khi bạn sử dụng các điểm đánh dấu, bạn cũng phải viết mã Java tùy chỉnh thay vì thực hiện cấu hình trong tệp XML hoặc .property ...

CẬP NHẬT 2 Từ http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluator

Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN");
logger.error(notifyAdmin,
  "This is a serious an error requiring the admin's attention",
   new Exception("Just testing"));

Để sử dụng điểm đánh dấu, bạn cần sử dụng API đánh dấu do SLF4J cung cấp. Đó có phải là ý của bạn khi nói "mã Java tùy chỉnh" không?
Ceki

@Ceki Có vẻ như chỉ sử dụng Logger.warn (Marker, msg) không mang lại cho bạn bất kỳ lợi ích nào cho đến khi bạn viết lớp tùy chỉnh cho các bộ lọc và đăng ký chúng ... Cú pháp đơn giản của logback.xml không có khả năng đặc biệt nào để làm việc với Marker (chỉ in chúng theo % marker )
gavenkoa

1
Điều gì tìm thấy "đặc biệt" trong những gì được trình bày tại logback.qos.ch/manual/appenders.html#OnMarkerEvaluator ?
Ceki

@Ceki Cảm ơn cho điểm! Nó chỉ có một nơi mà các điểm đánh dấu có thể được sử dụng?
gavenkoa

1
@Ceki Bây giờ chúng tôi đang sử dụng Elasticsearch, đó là cách để đánh dấu các sự kiện đặc biệt. Chúng tôi giữ các điểm đánh dấu được xác định trước trong một lớp chuyên dụng để sử dụng lại. Nó không rõ ràng khi bạn chỉ sử dụng grepqua nhật ký văn bản.
gavenkoa

Câu trả lời:


117

Đây là phiên bản được làm lại câu trả lời của tôi cho câu hỏi "Các phương pháp hay nhất để sử dụng Markers trong SLF4J / Logback ".

Đánh dấu có thể được sử dụng để màu hoặc đánh dấu một đơn tuyên bố log. Những gì bạn làm với những màu này, tức là các điểm đánh dấu, là hoàn toàn tùy thuộc vào bạn. Tuy nhiên, có hai mẫu phổ biến cho việc sử dụng điểm đánh dấu.

  1. Kích hoạt : Một số người khiếu nại có thể được hướng dẫn thực hiện một hành động khi có một điểm đánh dấu nhất định. Ví dụ, SMTPAppendercó thể được định cấu hình để gửi email bất cứ khi nào một sự kiện ghi nhật ký được đánh dấu bằng NOTIFY_ADMINđiểm đánh dấu bất kể cấp độ nhật ký. Xem kích hoạt dựa trên điểm đánh dấu trong tài liệu đăng nhập. Bạn cũng có thể kết hợp các mức nhật ký và điểm đánh dấu để kích hoạt.

  2. Lọc : Các điểm đánh dấu rất hữu ích để làm nổi bật các báo cáo nhật ký có giá trị nhất định. Ví dụ: bạn có thể tô màu / đánh dấu tất cả các bản ghi liên quan đến tính bền bỉ của mình (trong nhiều tệp lớp khác nhau) bằng màu "DB". Sau đó, bạn có thể lọc "DB": tắt ghi nhật ký ngoại trừ các câu lệnh nhật ký được đánh dấu bằng DB. Xem chương về bộ lọc trong tài liệu đăng nhập để biết thêm thông tin (tìm kiếm MarkerFilter). Lưu ý rằng việc lọc các điểm đánh dấu có thể được thực hiện không chỉ bằng logback mà còn bằng các công cụ phân tích nhật ký.

Trước khi Markers ra đời, để đạt được hành vi tương tự, bạn có tùy chọn 1) sử dụng cấp độ tùy chỉnh 2) sử dụng tên trình ghi đã sửa đổi. API SLF4J hiện không hỗ trợ các mức tùy chỉnh. Đối với tùy chọn 2, tên trình ghi hậu tố (hoặc tiền tố) có thể hoạt động được nếu một hoặc hai trình ghi cần được sửa đổi. Phương pháp này trở nên không thực tế vì ngay cả 3 trình ghi nhật ký trở lên cần phải được "phân loại" vì các tệp cấu hình liên quan trở nên không thể quản lý được.

Mặc dù một điểm đánh dấu có thể đã rất hữu ích, nhưng phiên bản tiếp theo của SLF4J, tức là phiên bản 2.0, sẽ cho phép nhiều điểm đánh dấu trên mỗi câu lệnh nhật ký.


1
Cũng có thể được sử dụng trong SiftingAppender cho discrimnator stackoverflow.com/a/30552012/1012497
nikli
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.