log4j thứ tự phân cấp đăng nhập


169

Hệ thống phân cấp của log4j đăng nhập là gì?

DEBUG
INFO
WARN
ERROR
FATAL

Cái nào cung cấp bản ghi cao nhất sẽ hữu ích để khắc phục sự cố? Bất kỳ ai có thể cung cấp thứ tự hoặc phân cấp trong đó đăng nhập diễn ra từ cao nhất đến thấp nhất? Cảm ơn!

Câu trả lời:


292

Bảng này có thể hữu ích cho bạn:

Mức đăng nhập

Đi xuống cột đầu tiên, bạn sẽ thấy nhật ký hoạt động ở mỗi cấp. tức là đối với WARN , ( FATAL, ERROR và WARN ) sẽ hiển thị. Đối với TẮT , không có gì sẽ được nhìn thấy.


Các điều khoản khả năng hiển thịmục không tự giải thích. Tôi thấy rằng các tài liệu chính thức cũng mơ hồ về điều này. Phương pháp sản lượng như error, info, debug, vv của chuyển nhượng logger mức ưu tiên / mức độ nghiêm trọng đến thông điệp logging. Nếu việc ghi nhật ký thực sự có hiệu lực (thông báo sẽ hiển thị) tùy thuộc vào mức ghi nhật ký hiệu quả của trình ghi nhật ký đang được sử dụng.
Sói

1
liên kết bị hỏng. vui lòng sửa hoặc xóa
yurin

Mặc dù điều này trả lời câu hỏi (đó chỉ là yêu cầu "thứ tự phân cấp"), cuối cùng tôi đã đánh giá thấp thuật ngữ kém của bạn: đi xuống , "khả năng hiển thị" , mục . Bạn không muốn giải thích cách cấu hình logger ảnh hưởng đến việc ghi nhật ký thực tế (chuyển các sự kiện nhật ký)? Vui lòng xem xét một bản cập nhật khác. BTW: bảng trong tài liệu chính thức (ở cuối phần) khác nhau trong điều trị OFFALL, sau khi đọc một số nguồn (không tìm thấy trường hợp đặc biệt) Tôi nghi ngờ rằng bảng của họ là chính xác.
Sói

Cảm ơn Wolf, tôi đã cập nhật câu trả lời theo ý kiến ​​của bạn.
nxhoaf

2
Tôi nghĩ rằng đây là một hình ảnh trực quan tuyệt vời về các mức nhật ký và các loại thông điệp nhật ký dự kiến ​​sẽ là đầu ra cho một cài đặt cấp ghi nhật ký cụ thể. Đề xuất duy nhất của tôi có thể là có các màu hàng xen kẽ để hướng dẫn người xem rằng biểu đồ nên được diễn giải theo hàng thay vì theo cột. (tức là các hàng biểu thị mức logger và các cột biểu thị các loại thông điệp tường trình sẽ có mặt)
Larry Hector

149

Sử dụng lực lượng, đọc nguồn (trích từ PriorityLevellớp được biên dịch, cấp độ TRACE đã được giới thiệu trong phiên bản 1.2.12):

public final static int OFF_INT = Integer.MAX_VALUE;
public final static int FATAL_INT = 50000;
public final static int ERROR_INT = 40000;
public final static int WARN_INT  = 30000;
public final static int INFO_INT  = 20000;
public final static int DEBUG_INT = 10000;
public static final int TRACE_INT = 5000; 
public final static int ALL_INT = Integer.MIN_VALUE; 

hoặc API log4j cho Levellớp , điều này làm cho nó khá rõ ràng.

Khi thư viện quyết định có in một câu lệnh nhất định hay không, nó sẽ tính toán mức độ hiệu quả của Loggerđối tượng chịu trách nhiệm (dựa trên cấu hình) và so sánh nó với LogEventmức của (tùy thuộc vào phương thức nào được sử dụng trong mã - theo dõi / gỡ lỗi / ... / Gây tử vong ). Nếu LogEventcấp của lớn hơn hoặc bằng Loggercấp của cấp, thì cấp LogEventđược gửi tới (các) ứng dụng - "được in". Tại cốt lõi, tất cả sôi sục đến một so sánh số nguyên và đây là nơi các hằng số này hoạt động.


56
OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
ALL

1
Điều này mâu thuẫn với thông tin được cung cấp tại guidespoint.com/log4j/log4j_logging_levels.htm Cái nào là đúng ???
Mike

1
kiểm tra mã ở đâu là các biến số nguyên để chứng minh docjar.com/html/api/org/apache/log4j/Level.java.html
the.malkolm

4
tại liên kết của bạn, nó nói rằng "TẤT CẢ <DEBUG <INFO <WARN <ERROR <FATAL <OFF" và nó hoàn toàn giống như tôi đã nói
the.malkolm

6
Biểu đồ Venn TẮT () TẤT CẢ (TRACE (DEBUG (INFO (WARN (ERROR (FATAL))))))
Hernán Eche

@Mike trên log4j Mức ghi nhật ký họ sử dụng thứ tự chữ cái trong bảng đầu tiên . Ngoại trừ người mất tích trace, sau đó họ nói chính xác rằng ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF(trong đó <có nghĩa là ít quan trọng hơn)
Sói

24

Phân cấp các mức ghi nhật ký log4j như sau theo thứ tự Cao nhất đến Thấp nhất:

  • TRACE
  • GỬI
  • THÔNG TIN
  • CẢNH BÁO
  • LỖI
  • BẠC
  • TẮT

Cấp độ nhật ký TRACE cung cấp ghi nhật ký cao nhất sẽ hữu ích để khắc phục sự cố. Mức ghi nhật ký DEBUG cũng rất hữu ích để xử lý sự cố.

Bạn cũng có thể tham khảo liên kết này để biết thêm thông tin về các cấp độ nhật ký: https://logging.apache.org/log4j/2.0/manual/arch architecture.html


12

[Lấy từ http://javarevisited.blogspot.com/2011/05/top-10-tips-on-logging-in-java.html]

DEBUG là mức ghi nhật ký java bị hạn chế thấp nhất và chúng ta nên viết mọi thứ chúng ta cần để gỡ lỗi một ứng dụng, chế độ ghi nhật ký java này chỉ nên được sử dụng trên môi trường Phát triển và Thử nghiệm và không được sử dụng trong môi trường sản xuất.

INFO bị hạn chế nhiều hơn mức ghi nhật ký DEBUG java và chúng ta nên ghi nhật ký các thông báo có mục đích thông tin như Máy chủ đã được khởi động, Tin nhắn đến, tin nhắn gửi đi, v.v. khi đăng nhập ở cấp INFO trong java.

WARN bị hạn chế hơn mức ghi nhật ký java INFO và được sử dụng để ghi nhật ký loại cảnh báo của tin nhắn, ví dụ như Mất kết nối giữa máy khách và máy chủ. Mất kết nối cơ sở dữ liệu, Ổ cắm đạt đến giới hạn của nó. Các thông báo và mức ghi nhật ký java này gần như rất quan trọng vì bạn có thể thiết lập cảnh báo về các thông điệp ghi nhật ký này trong java và để nhóm hỗ trợ của bạn theo dõi tình trạng của ứng dụng java và phản ứng với các thông báo cảnh báo này. Tóm lại, mức WARN được sử dụng để ghi thông báo cảnh báo để đăng nhập vào Java.

ERROR là mức ghi nhật ký java bị hạn chế nhiều hơn WARN và được sử dụng để ghi nhật ký Lỗi và Ngoại lệ, bạn cũng có thể thiết lập cảnh báo ở cấp ghi nhật ký java này và nhóm theo dõi cảnh báo để phản ứng với các thông báo này. LRI là nghiêm trọng để đăng nhập Java và bạn nên luôn luôn in nó.

Mức ghi nhật ký FATAL java chỉ định các sự kiện lỗi rất nghiêm trọng có thể sẽ khiến ứng dụng hủy bỏ. Sau đó, phần lớn ứng dụng của bạn gặp sự cố và dừng lại.

TẮT mức ghi nhật ký java có thứ hạng cao nhất có thể và được dự định tắt ghi nhật ký trong Java.


4

Thứ tự phân cấp

  1. TẤT CẢ
  2. TRACE
  3. GỬI
  4. THÔNG TIN
  5. CẢNH BÁO
  6. LỖI
  7. BẠC
  8. TẮT
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.