4.1 Danh sách các mức ghi nhật ký

Bạn đã viết chương trình của mình, tải nó lên máy chủ, và ngay lập tức bạn bắt đầu có câu hỏi:

  • Làm cách nào để đảm bảo rằng debug()phương thức không hoạt động khi đang làm việc production?
  • Có quá nhiều thông tin trong nhật ký, bạn có muốn chỉ để lại thông báo lỗi không?
  • Làm cách nào để xem nhật ký chi tiết cho một phần của ứng dụng?

Tất nhiên, những người tạo ra nhật ký đã phải đối mặt với điều tương tự cách đây nhiều thập kỷ. Tôi sẽ không cho bạn biết vấn đề này đã được giải quyết như thế nào bằng ngôn ngữ C, nhưng bằng ngôn ngữ Java, nó đã được giải quyết rất hay.

Nhật ký lọc dữ liệu trước khi ghi thông tin vào tệp . Bạn có thể nhanh chóng giảm/tăng độ chi tiết của nhật ký bằng cách đặt mức ghi nhật ký. Các cấp độ này được mô tả trong bảng dưới đây:

Mức độ Ghi chú
1 TẤT CẢ Nhật ký tất cả tin nhắn
2 DẤU VẾT Thông báo nhỏ khi gỡ lỗi
3 GỠ LỖI Thông báo quan trọng để gỡ lỗi
4 THÔNG TIN Tin nhắn đơn giản
5 CẢNH BÁO Chỉ ghi gây tử vong, lỗi và cảnh báo
6 LỖI Chỉ viết lỗi và lỗi nghiêm trọng
7 GÂY TỬ VONG Chỉ viết lỗi nghiêm trọng
số 8 TẮT Không viết tin nhắn vào nhật ký

Các mức này được sử dụng khi lọc tin nhắn. Nếu bạn đặt mức ghi nhật ký thành WARN, thì tất cả thư ít quan trọng hơn WARNsẽ bị loại bỏ: TRACE, DEBUG, INFO. Nếu bạn đặt mức lọc thành FATAL, thì thậm chí ERROR.

Có hai mức độ nghiêm trọng nữa được sử dụng trong quá trình lọc - mức này OFF(loại bỏ tất cả thư) và ALL- viết tất cả thư (không loại bỏ gì).

4.2 Ví dụ thiết lập nhật ký

Hãy xem một ví dụ thiết lập nhật ký đơn giản. Để làm điều này, chúng ta cần tệp log4j.properties, tệp này có thể được đặt trong thư mục tài nguyên. Hãy thêm nội dung sau vào nó:

# Root logger option
log4j.rootLogger=WARN, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}

Ở đây, trong dòng đầu tiên, chúng tôi đặt mức ghi nhật ký - WARN. Và điều này có nghĩa là các thông báo được ghi vào bộ ghi có trạng thái DEBUGsẽ INFObị bỏ qua.

  • Chỉ định loại ứng dụng chúng tôi sẽ sử dụng -ConsoleAppender
  • Chỉ định nơi chúng tôi sẽ viết nhật ký -System.out
  • Chúng tôi đặt lớp sẽ kiểm soát định dạng ghi -PatternLayout
  • Đặt định dạng ghi cho tất cả các tin nhắn - ngày và giờ

4.3 Các lỗi ghi nhật ký phổ biến

Và một điểm quan trọng nữa - các lỗi phổ biến khi ghi nhật ký. Không có nhiều lựa chọn để làm điều gì đó, nhưng có thể xác định một số lỗi phổ biến:

  1. Đăng nhập quá nhiều . Bạn không nên ghi lại mọi bước, điều này về mặt lý thuyết có thể quan trọng. Có một quy tắc: các bản ghi có thể tải hiệu suất không quá 10% . Nếu không sẽ có vấn đề về hiệu suất.
  2. Ghi nhật ký tất cả dữ liệu vào một tệp . Điều này sẽ khiến nó rất khó đọc/ghi vào một số thời điểm, chưa kể đến việc có giới hạn kích thước tệp trên một số hệ thống nhất định.
  3. Sử dụng các cấp độ đăng nhập sai . Mỗi cấp độ ghi nhật ký đều có ranh giới rõ ràng và chúng cần được tôn trọng. Nếu ranh giới không rõ ràng, bạn có thể đồng ý về cấp độ sẽ sử dụng.