log4j - Cấp độ ghi nhật ký

Các org.apache.log4j.Levelcác cấp độ. Bạn cũng có thể xác định các cấp độ tùy chỉnh của mình bằng cách phân loạiLevel lớp học.

Cấp độ Sự miêu tả
TẤT CẢ Tất cả các cấp bao gồm các cấp tùy chỉnh
NỢ Chỉ định các sự kiện thông tin chi tiết hữu ích nhất để gỡ lỗi ứng dụng.
THÔNG TIN Chỉ định các thông báo cung cấp thông tin làm nổi bật tiến trình của ứng dụng ở cấp độ chi tiết.
CẢNH BÁO Chỉ định các tình huống có thể gây hại.
LỖI Chỉ định các sự kiện lỗi có thể vẫn cho phép ứng dụng tiếp tục chạy.
CHẤT BÉO Chỉ định các sự kiện lỗi rất nghiêm trọng có thể dẫn đến việc ứng dụng bị hủy bỏ.
TẮT Xếp hạng cao nhất có thể và nhằm mục đích tắt ghi nhật ký.
TRACE Chỉ định các sự kiện thông tin chi tiết hơn DEBUG.

Làm thế nào để các cấp hoạt động?

Yêu cầu nhật ký cấp độ p trong một máy ghi có cấp độ qenablednếu p> = q. Quy tắc này là trọng tâm của log4j. Nó giả định rằng các cấp được sắp xếp. Đối với các cấp độ tiêu chuẩn, chúng ta có TẤT CẢ <GỢI Ý <THÔNG TIN <CẢNH BÁO <LỖI <BÉO <TẮT.

Ví dụ sau đây cho thấy cách chúng tôi có thể lọc tất cả các thông báo GỠ LỖI và THÔNG TIN. Chương trình này sử dụng phương thức ghi nhật ký setLevel (Level.X) để đặt mức ghi nhật ký mong muốn:

Ví dụ này sẽ in tất cả các thông báo ngoại trừ Gỡ lỗi và Thông tin:

import org.apache.log4j.*;

public class LogClass {
   private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
   
   public static void main(String[] args) {
      log.setLevel(Level.WARN);

      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

Khi bạn biên dịch và chạy LogClass chương trình, nó sẽ tạo ra kết quả sau:

Warn Message!
Error Message!
Fatal Message!

Đặt cấp độ bằng Tệp cấu hình

log4j cung cấp cho bạn cài đặt cấp độ dựa trên tệp cấu hình giúp bạn không cần thay đổi mã nguồn khi muốn thay đổi cấp độ gỡ lỗi.

Sau đây là một tệp cấu hình ví dụ sẽ thực hiện tác vụ tương tự như chúng tôi đã thực hiện bằng cách sử dụng log.setLevel(Level.WARN) trong ví dụ trên.

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = WARN, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

Bây giờ chúng ta hãy sử dụng chương trình sau của chúng tôi -

import org.apache.log4j.*;

public class LogClass {

   private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
   
   public static void main(String[] args) {
   
      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

Bây giờ biên dịch và chạy chương trình trên và bạn sẽ nhận được kết quả sau /usr/home/log4j/log.out tập tin -

Warn Message!
Error Message!
Fatal Message!