Mặc dù đối tượng Level của Log4j không phải là thành phần chính nhưng nó là đối tượng đầu tiên chúng ta cần phải biết. Đó là bởi vì đối tượng Level định nghĩa độ ưu tiên hay mức độ nghiêm trọng của nội dung message mà chúng ta cần log. Trong bài viết này, chúng ta sẽ cùng tìm hiểu thêm về đối tượng Level này các bạn nhé!
Các cấp độ của đối tượng Level
Có 7 cấp độ được định nghĩa trong đối tượng Level:
- ALL: đây là cấp độ thấp nhất, Logger và Appender được định nghĩa với cấp độ này, mọi thông tin cần log sẽ được log.
- DEBUG: ở cấp độ này, các thông tin debug sẽ được log.
- INFO: ở cấp độ này, các thông tin về luồng làm việc của chương trình sẽ được log.
- WARN: cấp độ cho cho phép chúng ta log các thông tin cảnh báo của chương trình.
- ERROR: các lỗi khi chạy chương trình sẽ được log nếu chúng ta sử dụng cấp độ này.
- FATAL: cấp độ này sẽ log các lỗi nghiêm trọng xảy ra trong chương trình, có thể làm cho chương trình không sử dụng được nữa.
- OFF: đây là cấp độ cao nhất, được sử dụng khi chúng ta không muốn log bất kỳ thông tin nào nữa.
Độ ưu tiên của các cấp độ từ thấp đến cao như sau: ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF.
Lọc thông tin cần log dựa vào đối tượng Level
Như mình đã nói ở trên, đối tượng Level định nghĩa độ ưu tiên của các thông tin cần log. Các thông tin cần log sẽ được lọc dựa vào độ ưu tiên mà Logger và Appender đang định nghĩa.
Ví dụ, đối tượng Logger và đối tượng Appender đang định nghĩa với Level là INFO, thì tất cả các thông tin cần log ở Level là INFO, WARN, ERROR, FATAL sẽ được log.
Xem xét lại ví dụ trong bài viết trước, bây giờ mình sẽ chỉnh sửa class Log4jExample lại với nội dung như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package com.huongdanjava.log4j; import org.apache.log4j.Logger; public class Log4jExample { private static Logger logger = Logger.getLogger(Log4jExample.class); public static void main(String[] args) { logger.debug("DEBUG: Welcome to Log4j!"); logger.info("INFO: Welcome to Log4j!"); logger.warn("WARN: Welcome to Log4j!"); logger.error("ERROR: Welcome to Log4j!"); } } |
Như các bạn thấy, mình đang định nghĩa 4 Level: DEBUG, INFO, WARN, ERROR cho đối tượng Logger trong class Example.
Root Logger của Log4j đang định nghĩa với priority là INFO, do đó chúng ta sẽ có kết quả như sau:
1 2 3 |
INFO : com.huongdanjava.log4j.Log4jExample - INFO: Welcome to Log4j! WARN : com.huongdanjava.log4j.Log4jExample - WARN: Welcome to Log4j! ERROR: com.huongdanjava.log4j.Log4jExample - ERROR: Welcome to Log4j! |
Nếu mình chỉnh sửa lại priority của Root Logger thành ERROR thì chỉ có duy nhất một message sau được log:
1 |
ERROR: com.huongdanjava.log4j.Log4jExample - ERROR: Welcome to Log4j! |