ใน Java วิธีสร้างระดับการบันทึกของคุณเองโดยใช้ Log4j (การกำหนดค่า Log4j 2)

เผยแพร่แล้ว: 2017-07-26
ใน Java วิธีสร้างระดับการบันทึกของคุณเองโดยใช้ Log4j 2

หากคุณต้องการเพิ่มระดับการบันทึกของคุณเองใน Log4j คุณสามารถทำได้ดังนี้ คุณจะต้องสร้างคลาสของคุณเองซึ่งจะขยายจาก Level , Custom Log Levels ด้วย Apache Log4j 2

Log4j เป็น logging framework ที่ง่ายและยืดหยุ่น การบันทึกช่วยให้นักพัฒนามีบริบทโดยละเอียดสำหรับความล้มเหลวของแอปพลิเคชัน ด้วย log4j คุณสามารถเปิดใช้งานการบันทึกที่รันไทม์โดยไม่ต้องแก้ไขไบนารีของแอปพลิเคชัน

แพ็คเกจ log4j ได้รับการออกแบบเพื่อให้คำสั่งเหล่านี้ยังคงอยู่ในรหัสที่จัดส่งโดยไม่ก่อให้เกิดค่าใช้จ่ายด้านประสิทธิภาพจำนวนมาก

วิธีสร้างระดับการบันทึกของคุณเองใน Log4j (การกำหนดค่า Log4j)

Log4j อนุญาตให้บันทึกคำขอพิมพ์ไปยังหลายปลายทาง ในการพูด log4j ปลายทางของเอาต์พุตจะเรียกว่า appender โดยจะแตกต่างกันไปตั้งแต่คอนโซล ไฟล์ ส่วนประกอบ GUI เซิร์ฟเวอร์ซ็อกเก็ตระยะไกลไปจนถึง JMS

ไฟล์ Jar ที่คุณต้องการ

นี่คือการพึ่งพา Maven:

อัปเดต Log4j เป็นเวอร์ชันล่าสุด

CVE-2021-44228: คุณสมบัติ Apache Log4j2 <=2.14.1 JNDI ที่ใช้ในการกำหนดค่า ข้อความบันทึก และพารามิเตอร์ไม่ได้ป้องกัน LDAP ที่ควบคุมโดยผู้โจมตีและปลายทางอื่นที่เกี่ยวข้องกับ JNDI

จาก log4j 2.16.0 ลักษณะการทำงานนี้ถูกปิดใช้งานโดยค่าเริ่มต้น

คุณต้องวางไฟล์ log4j.xml ไว้ใต้โฟลเดอร์ /resources :

ไฟล์ log4j.xml ในโฟลเดอร์ทรัพยากร

นี่คือตัวอย่างโค้ด Java สำหรับ:

  • Log4j Logging สำหรับระดับบันทึกที่กำหนดเองใน Java
  • การสร้างระดับการบันทึกของคุณเองใน log4j
  • ตัวอย่างบันทึกที่กำหนดเองของ log4j

CrunchifyLog4jLevel.java

ต้องอ่านอีก:

  • จะเริ่มหยุดเซิร์ฟเวอร์ Apache Tomcat ผ่าน Command Line ได้อย่างไร (ตั้งค่าเป็น Windows Service)
  • สร้างและปรับใช้ Web Service และ Web Service Client อย่างง่ายใน Eclipse

นี่คือเนื้อหาของไฟล์ log4j.xml

CrunchifyLog4jLevelTest.java

เรียกใช้โปรแกรมทดสอบ และคุณควรเห็นประเภทผลลัพธ์ด้านล่างใน Eclipse's Console

ค่า int ที่คุณระบุสำหรับระดับบันทึกของคุณมีความสำคัญ ที่นี่ฉันได้กำหนดระดับบันทึก " CRUNCHIFY " ให้สูงกว่าระดับ DEBUG แต่ต่ำกว่าระดับ TRACE ที่ log4j ให้ไว้

ดังนั้นเมื่อใดก็ตามที่คุณตั้งค่าระดับความสำคัญเป็น DEBUG ในหมวดหมู่ (ในไฟล์ log4j.xml ของคุณ) บันทึกระดับ CRUNCHIFY จะ ไม่ ส่งไปยังไฟล์บันทึก