ลำดับชั้นการบันทึก log4j


169

ลำดับชั้นของการบันทึก log4j คืออะไร?

DEBUG
INFO
WARN
ERROR
FATAL

ข้อใดให้การบันทึกสูงสุดซึ่งจะเป็นประโยชน์ในการแก้ไขปัญหา ใครสามารถให้คำสั่งซื้อหรือลำดับชั้นที่เข้าสู่ระบบจากสูงสุดไปต่ำสุด? ขอบคุณ!

คำตอบ:


292

ตารางนี้อาจมีประโยชน์สำหรับคุณ:

ระดับการบันทึก

ลงไปที่คอลัมน์แรกคุณจะเห็นว่าบันทึกการทำงานในแต่ละระดับ เช่นสำหรับWARN ( FATAL, ERROR และ WARN ) จะมองเห็นได้ สำหรับOFFจะไม่มีอะไรปรากฏให้เห็น


การมองเห็นเงื่อนไขและรายการไม่ได้อธิบายตนเอง ฉันเห็นว่าเอกสารอย่างเป็นทางการยังคลุมเครือในเรื่องนี้ วิธีการส่งออกเช่นerror, info, debugฯลฯ ของคนตัดไม้กำหนดระดับความสำคัญ / ความรุนแรงกับข้อความเข้าสู่ระบบ หากการบันทึกมีผลจริง ๆ (ข้อความจะปรากฏให้เห็น) จะขึ้นอยู่กับระดับการบันทึกที่มีประสิทธิภาพของเครื่องมือบันทึกที่ใช้
Wolf

1
ลิงก์เสีย โปรดแก้ไขหรือลบ
yurin

ถึงแม้ว่าคำตอบนี้คำถาม (ที่เพิ่งขอ "ลำดับชั้นของการสั่งซื้อ") ในที่สุดผมก็ downvoted สำหรับคำศัพท์ที่น่าสงสารของคุณ: จะลง , "การมองเห็น" ผลงาน , รายการ คุณไม่ต้องการอธิบายว่าการกำหนดค่าตัวบันทึกมีผลต่อการบันทึกจริงอย่างไร (ผ่านเหตุการณ์บันทึก) โปรดพิจารณาการอัปเดตอื่น BTW: ตารางในเอกสารประกอบอย่างเป็นทางการ (ตอนท้ายของส่วน) มีความแตกต่างในการรักษาOFFและALLดีหลังจากอ่านบางแหล่ง (ไม่พบกรณีพิเศษ) ฉันสงสัยว่าตารางของพวกเขาถูกต้อง
Wolf

ขอบคุณ Wolf ฉันได้อัปเดตคำตอบตามความคิดเห็นของคุณแล้ว
nxhoaf

2
ฉันคิดว่านี่เป็นภาพที่ยอดเยี่ยมของระดับการบันทึกและประเภทข้อความบันทึกที่คาดว่าจะส่งออกสำหรับการตั้งค่าระดับตัวบันทึกเฉพาะ ข้อเสนอแนะเดียวของฉันอาจจะมีการสลับสีแถวเพื่อเป็นแนวทางในการดูว่าแผนภูมิควรจะตีความโดยแถวมากกว่าคอลัมน์ (เช่นแถวที่แสดงถึงระดับคนตัดไม้และคอลัมน์แสดงประเภทข้อความบันทึกที่จะนำเสนอ)
Larry Hector

149

ใช้กำลังอ่านแหล่งที่มา (ข้อความที่ตัดตอนมาจากPriorityและLevelคอมไพล์คลาส, ระดับ TRACE ถูกนำมาใช้ในเวอร์ชัน 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; 

หรือlog4j API สำหรับLevelคลาสซึ่งทำให้ค่อนข้างชัดเจน

เมื่อห้องสมุดตัดสินใจว่าจะพิมพ์คำสั่งที่แน่นอนหรือไม่นั้นจะคำนวณระดับที่มีประสิทธิภาพของLoggerวัตถุที่รับผิดชอบ(ขึ้นอยู่กับการกำหนดค่า) และเปรียบเทียบกับLogEventระดับของ 's (ขึ้นอยู่กับวิธีการที่ใช้ในรหัส - trace / debug / ... / ถึงแก่ชีวิต ) หากLogEventระดับของมากกว่าหรือเท่ากับLoggerระดับLogEventจะถูกส่งไปที่ appender - "printed" ที่แกนกลางมันจะทำให้การเปรียบเทียบเป็นจำนวนเต็มและนี่คือสิ่งที่ค่าคงที่เหล่านี้มาสู่การกระทำ


56
OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
ALL

1
นี้จะขัดแย้งกับข้อมูลที่ให้ไว้ที่tutorialspoint.com/log4j/log4j_logging_levels.htm ที่หนึ่งที่เป็นความจริง ???
Mike

1
ตรวจสอบรหัสที่เป็นตัวแปรจำนวนเต็มเพื่อพิสูจน์docjar.com/html/api/org/apache/log4j/Level.java.html
the.malkolm

4
ที่ลิงค์ของคุณมันบอกว่า "ALL <DEBUG <INFO <WARN <ข้อผิดพลาด <FATAL <OFF" และมันสมบูรณ์แบบเหมือนกับที่ฉันพูด
the.malkolm

6
เวนไดอะแกรมปิด () ทั้งหมด (ติดตาม (ดีบัก (ข้อมูล (คำเตือน (ข้อผิดพลาด (FATAL))))))))
Hernán Eche

@ ไมค์บนlog4j ระดับการบันทึกข้อมูลที่พวกเขาใช้ลำดับตามตัวอักษรในตารางแรก ยกเว้นการหายไปtraceพวกเขากล่าวอย่างถูกต้องในภายหลังว่าALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF(ในที่นั้น<หมายถึงมีความสำคัญน้อยกว่า)
Wolf

24

ลำดับชั้นของระดับการบันทึก log4j มีดังต่อไปนี้ในลำดับสูงสุดถึงต่ำสุด:

  • ติดตาม
  • DEBUG
  • ข้อมูล
  • เตือน
  • ข้อผิดพลาด
  • FATAL
  • ปิด

ระดับการบันทึกการสืบค้นกลับให้การบันทึกสูงสุดซึ่งจะเป็นประโยชน์ในการแก้ไขปัญหา ระดับการบันทึกของ DEBUG นั้นมีประโยชน์อย่างมากในการแก้ไขปัญหา

นอกจากนี้คุณยังสามารถอ้างอิงลิงค์นี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับการบันทึก: https://logging.apache.org/log4j/2.0/manual/architecture.html


12

[นำมาจากhttp://javarevisited.blogspot.com/2011/05/top-10-tips-on-logging-in-java.html]

DEBUG เป็นระดับการบันทึกข้อมูลจาวาต่ำสุดที่ จำกัด และเราควรเขียนทุกอย่างที่เราต้องการในการดีบักแอปพลิเคชั่นโหมดการบันทึกจาวานี้ควรใช้ในการพัฒนาและทดสอบสภาพแวดล้อมเท่านั้นและต้องไม่ใช้ในสภาพแวดล้อมการผลิต

INFO ถูก จำกัด มากกว่าระดับการบันทึก DEBUG java และเราควรบันทึกข้อความที่มีวัตถุประสงค์เพื่อให้ข้อมูลเช่นเซิร์ฟเวอร์เริ่มต้นข้อความขาเข้าข้อความขาออก ฯลฯ ในการบันทึกระดับ INFO ในจาวา

WARN ถูก จำกัด มากขึ้นกว่าระดับการบันทึกข้อมูล INFO java และใช้เพื่อบันทึกการเรียงลำดับคำเตือนของข้อความเช่นการเชื่อมต่อที่หายไประหว่างไคลเอนต์และเซิร์ฟเวอร์ การเชื่อมต่อฐานข้อมูลหายไปซ็อกเก็ตถึงขีด จำกัด ข้อความและระดับการบันทึกข้อมูลจาวาเหล่านี้มีความสำคัญเนื่องจากคุณสามารถตั้งค่าการแจ้งเตือนข้อความการบันทึกเหล่านี้ในจาวาและให้ทีมสนับสนุนของคุณตรวจสอบสภาพการทำงานของจาวาแอปพลิเคชันของคุณและตอบสนองต่อข้อความเตือนนี้ ในระดับ WARN สรุปใช้เพื่อบันทึกข้อความเตือนสำหรับการเข้าสู่ระบบ Java

ข้อผิดพลาดเป็นระดับการบันทึก java ที่ จำกัด มากกว่า WARN และใช้เพื่อบันทึกข้อผิดพลาดและข้อยกเว้นคุณสามารถตั้งค่าการแจ้งเตือนในระดับการบันทึก java นี้และทีมตรวจสอบการแจ้งเตือนเพื่อตอบสนองต่อข้อความนี้ ข้อผิดพลาดร้ายแรงสำหรับการเข้าสู่ระบบใน Java และคุณควรพิมพ์

ระดับการบันทึก Java FATAL กำหนดเหตุการณ์ข้อผิดพลาดที่รุนแรงมากซึ่งอาจทำให้แอปพลิเคชันยกเลิก หลังจากนี้แอปพลิเคชันของคุณส่วนใหญ่จะหยุดทำงานและหยุดทำงาน

ระดับการบันทึกของ OFF ของ Java มีอันดับสูงสุดที่เป็นไปได้และมีวัตถุประสงค์เพื่อปิดการบันทึกใน Java


4

ลำดับขั้น

  1. ทั้งหมด
  2. ติดตาม
  3. DEBUG
  4. ข้อมูล
  5. เตือน
  6. ข้อผิดพลาด
  7. FATAL
  8. ปิด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.