1. คำนำ
Log4j เป็นกรอบการบันทึกที่เชื่อถือได้เร็วและยืดหยุ่น (API) ที่เขียนใน Java ซึ่งเปิดตัวภายใต้ใบอนุญาตซอฟต์แวร์ Apache Log4j ได้รับการย้ายไปยังภาษาเช่น C, C ++, C#, Perl, Python และ Ruby
log4j สามารถกำหนดค่าได้สูงและสามารถกำหนดค่าผ่านไฟล์ภายนอกที่รันไทม์ ขึ้นอยู่กับระดับลำดับความสำคัญของบันทึกและจัดเตรียมกลไกเพื่อระบุข้อมูลการบันทึกไปยังปลายทางมากมายเช่น: ฐานข้อมูลไฟล์คอนโซลบันทึกระบบ UNIX ฯลฯ ฯลฯ
มีสามองค์ประกอบหลักใน log4j:
Loggers: รับผิดชอบในการบันทึกข้อมูลบันทึก
Appenders: รับผิดชอบในการเผยแพร่ข้อมูลบันทึกไปยังจุดหมายปลายทางที่ต้องการแตกต่างกัน
เลย์เอาต์: รับผิดชอบในการจัดรูปแบบข้อมูลบันทึกของสไตล์ที่แตกต่างกัน
หมายเหตุ: บทความนี้ขึ้นอยู่กับ log4j 2.x ขึ้นไป
2. การติดตั้ง
log4j--core-xx.jar
log4j-api-xx.jar
log4j-web-xx.jar (การอ้างอิงที่จำเป็นสำหรับโครงการเว็บ)
3. การกำหนดค่า
เตรียมบันทึกบางอย่างเพื่อเพิ่มการอ้างอิงต่อไปนี้:
นำเข้า org.apache.logging.log4j.logmanager; นำเข้า org.apache.logging.log4j.logger;
logger logger แบบคงที่ = logManager.getLogger (test.class.getName ());
ตำแหน่งไฟล์การกำหนดค่าอยู่ใน: ไดเรกทอรีรูท SRC แม้ว่าจะไม่มีไฟล์การกำหนดค่า แต่ก็จะไม่มีข้อผิดพลาด โดยค่าเริ่มต้นจะเป็นเอาต์พุตในรูปแบบของ คอนโซล
ไฟล์การกำหนดค่า log4j2 นั้นแตกต่างจาก log4 มาก (เวอร์ชัน 1.x นั้นแตกต่างกันมาก) และสามารถใช้รูปแบบ. xml, .json หรือ. jsn เท่านั้น การกำหนดค่าเฉพาะมีดังนี้ ( ${web:rootDir} แสดงถึงไดเรกทอรีเว็บรูท):
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <สถานะการกำหนดค่า = "ข้อผิดพลาด"> <!-กำหนด appenders ทั้งหมด-> <appenders> <!-การกำหนดค่าของคอนโซลเอาท์พุทนี้-> <คอนโซลชื่อ = "คอนโซล" %-5Level %คลาส {36} %l %m- %msg %xex %n "/> </console> <!-ไฟล์จะพิมพ์ข้อมูลทั้งหมด บันทึกนี้จะถูกล้างโดยอัตโนมัติทุกครั้งที่รันซึ่งจะถูกกำหนดโดยแอตทริบิวต์ภาคผนวกเหมาะสำหรับการทดสอบชั่วคราว-> <file name = "ข้อผิดพลาด" ชื่อ filename = "$ {web: rootdir} /logs/error.log" append = "false"> <! Level = "ข้อผิดพลาด" onMatch = "ยอมรับ" onMismatch = "deny"/> <patternlayout charset = "utf-8" รูปแบบ = " %d {hh: mm: ss.sss} %-5level %คลาส {36} %l %m- %msg %xex %n"/> ทุกครั้งที่ขนาดเกินขนาดบันทึกของขนาดนี้จะถูกเก็บไว้โดยอัตโนมัติในโฟลเดอร์ที่สร้างขึ้นโดยปีและบีบอัดเป็นไฟล์เก็บถาวร-> <rollingfile name = "RollingFile" filename = "$ {web: rootdir} /logs/history.log" filePattern = "log/$$ {วันที่: yyyy-mm}/history- %d {mm-dd-yyyy}- %i.log.gz"> <patternlayout charset = "utf-8" รูปแบบ = " %d {yyyy-mm-dd ' %msg%xex%n "/> <sizebasedtriggeringpolicy size =" 50mb "/> </rollingfile> </appenders> <!-จากนั้นกำหนด logger Appender จะมีผลเฉพาะในกรณีที่มีการกำหนดและแนะนำตัวบันทึก -> <loggers> <!-สร้างตัวบันทึกรูทเริ่มต้น-> <รูทระดับ = "ติดตาม"> <Appender-ref ref = "ข้อผิดพลาด"/> <Appender-ref ref = "RollingFile"/> <Appender-ref ref = "คอนโซล"/> </root> </loggers>4. โครงการทั่วไปและโครงการเว็บ
สำหรับโครงการทั่วไปการกำหนดค่าข้างต้นสามารถใช้งานได้ตามปกติหลังจากเสร็จสิ้นการกำหนดค่าข้างต้นและสำหรับโครงการเว็บไฟล์บันทึกจะไม่ถูกสร้างขึ้น คุณต้องเพิ่มการกำหนดค่าต่อไปนี้ภายใต้โหนดรูทของ <web-app> ใน web.xml:
<!-log4j2.x start-> <listener> <Sistener-Class> org.apache.logging.log4j.web.log4jservletContextListener </listener-class> </listener> <Tilter-class> org.apache.logging.log4j.web.log4jservletFilter </filter-class> </ตัวกรอง> <ฟิลเตอร์-แมป> <filter-name> log4jservletfilter </filter-name>
สรุป
ด้านบนเป็นวิธีการใช้ log4j เพื่อบันทึกบันทึกใน Java ฉันหวังว่าเนื้อหาของบทความนี้จะช่วยในการศึกษาหรือทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com