Mapped Diagnostic Context với Logging Framework trong Java

Mapped Diagnostic Context (MDC) là một khái niệm, nói nôm na là nó cho phép từ Java code, chúng ta có thể truyền một số thông tin vào log message bên cạnh message mà chúng ta cần log sử dụng các Logging Framework như Log4J, Log4J2, Logback, SLF4J. Việc sử dụng chức năng này sẽ giúp chúng ta trong một số trường hợp như tracking việc thực thi của ứng dụng theo một tiêu chí nào đó thông qua message log, … Cụ thể như thế nào, chúng ta hãy cùng nhau tìm hiểu trong bài viết này các bạn nhé!

Đầu tiên, mình sẽ tạo mới một Maven project:

và sử dụng SLF4J cho Log4J để làm ví dụ:

Để đơn giản, mình sẽ cấu hình Log4J với nội dung đơn giản như sau:

Mapped Diagnostic Context với Logging Framework trong Java

Với cấu hình của PatternLayout trên, mỗi log message sẽ có định dạng là: logging level + category + message cần log + ký tự xuống dòng.

Khi đó, nếu mình muốn log một message nào đó:

thì kết quả sẽ như sau:

Mapped Diagnostic Context với Logging Framework trong Java

Bây giờ, nếu mình muốn identify xem log message đó là từ người dùng nào, nếu không sử dụng Mapped Diagnostic Context thì mình cần phải thêm đoạn code đó vào mỗi message mình cần log. Ví dụ như:

Kết quả:

Mapped Diagnostic Context với Logging Framework trong Java

Nếu bây giờ, mình sử dụng Mapped Diagnostic Context bằng cách modify đoạn code trên sử dụng đối tượng org.slf4j.MDC của SLF4J:

và khai báo từ khoá user vào PatternLayout trong tập tin cấu hình của Log4J:

thì kết quả cũng như vậy:

Mapped Diagnostic Context với Logging Framework trong Java

Như các bạn thấy, sử dụng đối tượng MDC của SLF4J cho phép chúng ta định nghĩa một key với value của nó. Sau đó, khai báo key này trong tập tin cấu hình của Log4J với cú pháp:

giúp chúng ta có thể truyền thông tin mà chúng ta cần vào log message tách bạch với phần message cần log, giảm effort đi rất nhiều.

Add Comment