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

คุณเขียนโปรแกรมของคุณ อัปโหลดไปยังเซิร์ฟเวอร์ จากนั้นคุณก็เริ่มมีคำถามทันที:

  • จะแน่ใจได้อย่างไรว่าdebug()วิธีการนั้นใช้ไม่ได้ขณะทำงานในproduction?
  • มีข้อมูลมากเกินไปในบันทึก คุณต้องการฝากไว้เฉพาะข้อความแสดงข้อผิดพลาดหรือไม่
  • จะดูบันทึกโดยละเอียดสำหรับส่วนหนึ่งของแอปพลิเคชันได้อย่างไร

แน่นอนว่าผู้สร้างท่อนซุงต้องเผชิญกับสิ่งเดียวกันเมื่อหลายสิบปีก่อน ฉันจะไม่บอกคุณว่าปัญหานี้แก้ไขได้อย่างไรในภาษา C แต่ในภาษา Java มันแก้ไขได้อย่างสวยงามมาก

บันทึกจะกรองข้อมูลก่อนที่จะเขียนข้อมูลไปยัง คุณสามารถลด/เพิ่มรายละเอียดของบันทึกได้อย่างรวดเร็วโดยการตั้งค่าระดับการบันทึก ระดับเหล่านี้อธิบายไว้ในตารางด้านล่าง:

ระดับ บันทึก
1 ทั้งหมด บันทึกข้อความทั้งหมด
2 ติดตาม ข้อความขนาดเล็กเมื่อทำการดีบั๊ก
3 ดีบัก ข้อความที่สำคัญสำหรับการดีบัก
4 ข้อมูล ข้อความง่ายๆ
5 เตือน เขียนเฉพาะร้ายแรง ข้อผิดพลาด และคำเตือน
6 ข้อผิดพลาด เขียนเฉพาะข้อผิดพลาดและข้อผิดพลาดร้ายแรง
7 ร้ายแรง เขียนข้อผิดพลาดร้ายแรงเท่านั้น
8 ปิด อย่าเขียนข้อความลงในบันทึก

ระดับเหล่านี้ใช้เมื่อกรองข้อความ หากคุณตั้งค่าระดับการบันทึกเป็นข้อความWARNทั้งหมดที่สำคัญน้อยกว่าWARNจะถูกยกเลิก: TRACE, DEBUG, INFOหากคุณตั้งค่าระดับการกรองเป็นFATALแม้แต่ERROR

มีระดับความรุนแรงอีกสองระดับที่ใช้ในการกรอง - ระดับนี้OFF(ละทิ้งข้อความทั้งหมด) และALL- เขียนข้อความทั้งหมด (ละทิ้งอะไรเลย)

4.2 ตัวอย่างการตั้งค่าบันทึก

ลองดูตัวอย่างการตั้งค่าบันทึกอย่างง่าย ในการทำเช่นนี้ เราจำเป็นต้องมีไฟล์ log4j.properties ซึ่งสามารถวางไว้ในโฟลเดอร์ทรัพยากร มาเพิ่มเนื้อหาต่อไปนี้กันเถอะ:

# 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}

ที่นี่ในบรรทัดแรกเราตั้งค่าระดับการบันทึก - WARN. และนั่นหมายความว่าข้อความที่เขียนถึงตัวบันทึกที่มีสถานะDEBUGจะINFOถูกละเว้น

  • ระบุประเภทของ appender ที่เราจะใช้ -ConsoleAppender
  • ระบุตำแหน่งที่เราจะเขียนบันทึก -System.out
  • เรากำหนดคลาสที่จะควบคุมรูปแบบการบันทึก -PatternLayout
  • กำหนดรูปแบบการบันทึกสำหรับข้อความทั้งหมด - วันที่และเวลา

4.3 ข้อผิดพลาดในการบันทึกยอดนิยม

และอีกหนึ่งจุดสำคัญ - ข้อผิดพลาดยอดนิยมในการบันทึก ไม่มีตัวเลือกมากมายในการทำบางสิ่ง แต่สามารถระบุข้อผิดพลาดทั่วไปหลายประการ:

  1. เข้าสู่ระบบมากเกินไป คุณไม่ควรบันทึกทุกขั้นตอน ซึ่งในทางทฤษฎีอาจมีความสำคัญ มีกฎ: บันทึกสามารถโหลดประสิทธิภาพได้ไม่เกิน 10 % มิฉะนั้นจะมีปัญหาด้านประสิทธิภาพ
  2. บันทึกข้อมูลทั้งหมดลงในไฟล์เดียว ซึ่งจะทำให้อ่าน/เขียนได้ยากมากในบางจุด ไม่ต้องพูดถึงว่ามีการจำกัดขนาดไฟล์ในบางระบบ
  3. ใช้ระดับการบันทึกที่ไม่ถูกต้อง การบันทึกแต่ละระดับมีขอบเขตที่ชัดเจน และควรได้รับการเคารพ หากขอบเขตไม่ชัดเจน คุณสามารถตกลงกันได้ว่าจะใช้ระดับใด