1.ข้อดีของ Log4j
Log4j เป็นโครงการโอเพ่นซอร์สของ Apache ด้วยการใช้ Log4j เราสามารถควบคุมตำแหน่งการจัดส่งของข้อมูลบันทึก เรายังสามารถควบคุมรูปแบบผลลัพธ์ของแต่ละบันทึกได้ด้วยการกำหนดระดับของข้อมูลบันทึกแต่ละรายการ เราจึงสามารถควบคุมการเข้าสู่ระบบได้มากขึ้น รายละเอียดกระบวนการสร้าง สิ่งที่น่าสนใจที่สุดคือสามารถกำหนดค่าเหล่านี้ได้อย่างยืดหยุ่นผ่านไฟล์กำหนดค่าโดยไม่ต้องแก้ไขโค้ดแอปพลิเคชัน
ประโยชน์ของ log4j คือ:
(1) ด้วยการแก้ไขไฟล์การกำหนดค่า คุณสามารถเลือกปลายทางของคอนโซลข้อมูลบันทึก, ไฟล์, ส่วนประกอบ GUI, แม้แต่เซิร์ฟเวอร์ซ็อกเก็ต, เครื่องบันทึกเหตุการณ์ NT, UNIX Syslog daemon ฯลฯ
(2) ด้วยการแก้ไขไฟล์การกำหนดค่า คุณสามารถกำหนดระดับของข้อความบันทึกแต่ละรายการเพื่อควบคุมว่าจะส่งออกหรือไม่ ในระหว่างขั้นตอนการพัฒนาระบบ สามารถพิมพ์ข้อมูลบันทึกโดยละเอียดเพื่อติดตามการทำงานของระบบได้ หลังจากที่ระบบเสถียรแล้ว ก็สามารถปิดเอาต์พุตบันทึกได้ จึงติดตามการทำงานของระบบในขณะที่ลดรหัสขยะ (System.out.println(.. ....)รอ).
(3) การใช้ log4j จำเป็นต้องมีกลไกบันทึกแบบรวมสำหรับทั้งระบบ ซึ่งเอื้อต่อการวางแผนระบบ
2. ไฟล์การกำหนดค่า
Log4j ประกอบด้วยองค์ประกอบที่สำคัญสามส่วน ได้แก่ ลำดับความสำคัญของข้อมูลบันทึก ปลายทางเอาต์พุตของข้อมูลบันทึก และรูปแบบเอาต์พุตของข้อมูลบันทึก ลำดับความสำคัญของข้อมูลบันทึกจากสูงไปต่ำ ได้แก่ FATAL, ERROR, WARN, INFO, DEBUG, TRACE และ ALL ซึ่งใช้เพื่อระบุความสำคัญของข้อมูลบันทึกนี้ตามลำดับ ปลายทางเอาต์พุตของข้อมูลบันทึกจะระบุว่าบันทึกจะ ถูกพิมพ์ไปยังคอนโซลหรือในไฟล์ และรูปแบบเอาต์พุตจะควบคุมเนื้อหาที่แสดงของข้อมูลบันทึก
2.1 ลำดับความสำคัญของข้อมูลบันทึก
Log4j แนะนำให้ใช้เพียงสี่ระดับเท่านั้น ลำดับความสำคัญจากมากไปน้อยคือ ERROR, WARN, INFO และ DEBUG ด้วยระดับที่กำหนดไว้ที่นี่ คุณสามารถควบคุมการเปิดและปิดระดับข้อมูลบันทึกที่เกี่ยวข้องในแอปพลิเคชันได้ หากกำหนดระดับ INFO ที่นี่ ข้อมูลบันทึกทั้งหมดที่ต่ำกว่าระดับ INFO ในแอปพลิเคชันจะไม่ถูกพิมพ์
2.2 การใช้แหล่งสัญญาณขาออก
การเลือกเปิดหรือปิดใช้คำขอบันทึกเป็นเพียงส่วนหนึ่งของฟังก์ชันการทำงานของ Log4j Log4j อนุญาตให้ส่งคำขอบันทึกไปยังแหล่งเอาต์พุตหลายแหล่ง ในแง่ Log4j แหล่งเอาต์พุตเรียกว่า Appender
ภาคผนวกประกอบด้วยคอนโซล, ไฟล์, ส่วนประกอบ GUI, เซิร์ฟเวอร์ซ็อกเก็ตระยะไกล, JMS, NT Event Loggers, UNIX Syslog daemons ระยะไกล (บริการบันทึกพื้นหลัง UNIX ระยะไกล) นอกจากนี้ยังสามารถบันทึกแบบอะซิงโครนัสได้อีกด้วย คนตัดไม้สามารถตั้งค่าผู้ผนวกได้มากกว่าหนึ่งคน เพิ่ม appender ให้กับ logger ที่กำหนดโดยใช้เมธอด addAppender สำหรับตัวบันทึกที่กำหนด แต่ละคำขอบันทึกที่ถูกต้องจะถูกส่งต่อไปยังผู้ต่อท้ายทั้งหมดของตัวบันทึก และผู้ต่อท้ายของตัวบันทึกหลักของตัวบันทึก
2.2.1 คอนโซลผู้ผนวก
หากใช้ ConsoleAppender ข้อมูลบันทึกจะถูกเขียนไปยังคอนโซล ผลที่ได้จะเทียบเท่ากับการพิมพ์ข้อมูลโดยตรงไปยัง System.out
2.2.2 ไฟล์ Appender
การใช้ FileAppender ข้อมูลบันทึกจะถูกเขียนไปยังไฟล์ที่ระบุ นี่ควรเป็นสถานการณ์ที่ใช้บ่อยกว่านี้ ดังนั้น ควรระบุชื่อไฟล์ของเอาต์พุตบันทึกในไฟล์คอนฟิกูเรชัน การกำหนดค่าต่อไปนี้ระบุชื่อไฟล์บันทึก log.txt
log4j.appender.appendername.File=log.txt โปรดทราบว่า appendername จะถูกแทนที่ด้วยนามแฝงของ Appender ในการกำหนดค่าเฉพาะ
หมายเหตุ: ปัญหาเกี่ยวกับเส้นทางไฟล์บันทึกที่ระบุ
2.2.3 DailyRollingAppender
คุณสามารถใช้ FileAppender เพื่อส่งออกข้อมูลบันทึกไปยังไฟล์ได้ แต่หากไฟล์มีขนาดใหญ่เกินไป จะอ่านไม่สะดวก ในเวลานี้คุณสามารถใช้ DailyRollingAppender ได้ DailyRollingAppender สามารถส่งออกข้อมูลบันทึกไปยังไฟล์ที่แยกตามวันที่ ไฟล์การกำหนดค่าจะสร้างไฟล์บันทึกทุกวัน (สามารถตั้งเวลาได้) และไฟล์บันทึกแต่ละไฟล์จะบันทึกเฉพาะข้อมูลบันทึกของวันนั้น:
คัดลอกรหัสรหัส ดังต่อไปนี้:
log4j.appender.appendername=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Aappendername.file=log
log4j.appender.appendername.DatePattern='.'yyyy-MM-dd
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern= %5r %-5p %c{2} - %m%n
2.2.4 RollingFileAppender
ไฟล์ใหม่จะถูกสร้างขึ้นเมื่อขนาดไฟล์ถึงขนาดที่ระบุ
คัดลอกรหัสรหัส ดังต่อไปนี้:
og4j.appender.appendername=org.apache.log4j.RollingFileAppender
log4j.appender.appendername.File= ../logs/rlog.log
#Control ขนาดไฟล์บันทึกสูงสุด
log4j.appender.appendername.MaxFileSize=100KB
# เก็บไฟล์บันทึก (ไฟล์สำรองหนึ่งไฟล์ที่นี่)
log4j.appender.appendername.MaxBackupIndex=1
log4j.appender.appendername.layout=org.apache.log4j.PatternLayout
log4j.appender.appendername.layout.ConversionPattern=%p %t %c - %m%n
ไฟล์คอนฟิกูเรชันนี้ระบุชื่อ appendername ของแหล่งเอาต์พุต ซึ่งเป็นไฟล์บันทึกการหมุนเวียน ไฟล์ที่ใหญ่ที่สุดคือ 100KB เมื่อไฟล์บันทึกถึงขนาดสูงสุด Log4J จะเปลี่ยนชื่อ rlog.log เป็น rlog.log.1 โดยอัตโนมัติ จากนั้นสร้างไฟล์ rlog.log ใหม่ และหมุนตามลำดับ
2.2.5 ผู้เขียนผู้ผนวก
ส่งข้อมูลบันทึกไปยังสถานที่ที่ระบุในรูปแบบสตรีมมิ่ง
2.3 การกำหนดค่าเค้าโครง
เค้าโครงระบุรูปแบบของเอาต์พุตข้อมูลบันทึก
2.3.1 รูปแบบเค้าโครง
คัดลอกรหัสรหัส ดังต่อไปนี้:
org.apache.log4j.HTMLayout (เค้าโครงในรูปแบบตาราง HTML)
org.apache.log4j.PatternLayout (สามารถระบุรูปแบบเค้าโครงได้อย่างยืดหยุ่น)
org.apache.log4j.SimpleLayout (ประกอบด้วยระดับและสตริงข้อมูลของข้อมูลบันทึก)
org.apache.log4j.TTCCLayout (ประกอบด้วยข้อมูลเวลาการสร้างบันทึก เธรด หมวดหมู่ ฯลฯ)
2.3.2 รูปแบบ
คัดลอกรหัสรหัส ดังต่อไปนี้:
%m ส่งออกข้อความที่ระบุในโค้ด
%p ลำดับความสำคัญของเอาต์พุต ได้แก่ DEBUG, INFO, WARN, ERROR, FATAL
%r ส่งออกจำนวนมิลลิวินาทีที่ใช้ตั้งแต่เริ่มต้นแอปพลิเคชันจนถึงส่งออกข้อมูลบันทึก
%c ส่งออกหมวดหมู่ที่เป็นของคลาสนั้น โดยปกติจะเป็นชื่อเต็มของคลาส
%t ส่งออกชื่อของเธรดที่สร้างเหตุการณ์บันทึก
%n ส่งออกอักขระขึ้นบรรทัดใหม่และป้อนบรรทัด ซึ่งก็คือ "rn" บนแพลตฟอร์ม Windows และ "n" บนแพลตฟอร์ม Unix
%d ส่งออกวันที่หรือเวลาของจุดเวลาบันทึก รูปแบบเริ่มต้นคือ ISO8601 คุณยังสามารถระบุรูปแบบในภายหลังได้ เช่น: %d{yyy MMM dd HH:mm:ss,SSS} : 18 ตุลาคม 2545 22:10:28,921
%l แสดงผลตำแหน่งที่เกิดเหตุการณ์บันทึก รวมถึงชื่อหมวดหมู่ เธรดที่เกิดเหตุการณ์ และหมายเลขบรรทัดในโค้ด ตัวอย่าง: Testlog4.main(ทดสอบ Log4.java:10)
3.ตั้งค่าระดับเอาต์พุตบันทึกสำหรับ Appender ที่แตกต่างกัน
ซึ่งสามารถทำได้โดยการแก้ไขเกณฑ์ของ Appender ในการกำหนดค่า เช่นตัวอย่างต่อไปนี้:
ไฟล์การกำหนดค่า:
log4j.rootLogger = ดีบัก,A,B,C
#ส่งออกไปยังคอนโซล
log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.Target = System.out
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = %p %t %c - %m%n
# ส่งออกไปยังไฟล์บันทึก
log4j.appender.B = org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File = บันทึก/log.log
log4j.appender.B.Append = จริง
log4j.appender.B.Threshold = DEBUG # บันทึกเอาต์พุตที่สูงกว่าระดับ EBUG
log4j.appender.B.layout = org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %p %t %c - %m%n
# บันทึกข้อมูลข้อยกเว้นลงในไฟล์แยกต่างหาก
log4j.appender.C = org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File = logs/error.log #Exception ชื่อไฟล์บันทึก
log4j.appender.C.Append = จริง
log4j.appender.C.Threshold = ข้อผิดพลาด #เฉพาะบันทึกเอาต์พุตที่สูงกว่าระดับข้อผิดพลาดเท่านั้น
log4j.appender.C.layout = org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern = %p %t %c - %m%n
ตัวอย่าง:
คัดลอกรหัสรหัส ดังต่อไปนี้:
TestLog4j คลาสสาธารณะ
-
โมฆะสาธารณะคง main (String [] args)
-
PropertyConfigurator.configure ("D:/Code/conf/log4j.properties");
คนตัดไม้ คนตัดไม้ = Logger.getLogger(TestLog4j.class);
logger.debug("แก้ปัญหา");
logger.error("ข้อผิดพลาด");
-
-