1. ไฟล์การกำหนดค่า
รูปแบบพื้นฐานของไฟล์การกำหนดค่า Log4J เป็นดังนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
#กำหนดค่ารูท Logger
log4j.rootLogger = [ ระดับ ] , appenderName1 , appenderName2 , …
#Configure บันทึกข้อมูลปลายทางเอาท์พุท Appender
log4j.appender.appenderName = Fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = ค่า 1
-
log4j.appender.appenderName.optionN = ค่า N
#Configure รูปแบบ (เค้าโครง) ของข้อมูลบันทึก
log4j.appender.appenderName.layout = เต็ม.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = ค่า 1
-
log4j.appender.appenderName.layout.optionN = valueN
โดยที่ [ระดับ] คือระดับเอาต์พุตของบันทึก มีทั้งหมด 5 ระดับ:
คัดลอกรหัสรหัส ดังต่อไปนี้:
ร้ายแรง 0
ข้อผิดพลาด 3
คำเตือน 4
ข้อมูล 6
ดีบัก 7
Appender เป็นปลายทางเอาต์พุตบันทึก ผู้ผนวกที่ Log4j จัดเตรียมไว้ให้มีดังต่อไปนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
org.apache.log4j.ConsoleAppender (คอนโซล)
org.apache.log4j.FileAppender (ไฟล์)
org.apache.log4j.DailyRollingFileAppender (สร้างไฟล์บันทึกทุกวัน)
org.apache.log4j.RollingFileAppender (สร้างไฟล์ใหม่เมื่อขนาดไฟล์ถึงขนาดที่ระบุ)
org.apache.log4j.WriterAppender (ส่งข้อมูลบันทึกในรูปแบบสตรีมมิ่งไปยังตำแหน่งที่ระบุ)
เค้าโครง: รูปแบบเอาต์พุตบันทึก เค้าโครงที่ Log4j ให้มามีดังนี้:
org.apache.log4j.HTMLayout (เค้าโครงในรูปแบบตาราง HTML)
org.apache.log4j.PatternLayout (สามารถระบุรูปแบบเค้าโครงได้อย่างยืดหยุ่น)
org.apache.log4j.SimpleLayout (ประกอบด้วยระดับและสตริงข้อมูลของข้อมูลบันทึก)
org.apache.log4j.TTCCLayout (ประกอบด้วยข้อมูลเวลาการสร้างบันทึก เธรด หมวดหมู่ ฯลฯ)
พารามิเตอร์การพิมพ์: Log4J ใช้รูปแบบการพิมพ์ที่คล้ายกับฟังก์ชัน printf ในภาษา C เพื่อจัดรูปแบบข้อมูลบันทึกดังต่อไปนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
%m ส่งออกข้อความที่ระบุในโค้ด %p ลำดับความสำคัญของเอาต์พุต นั่นคือ DEBUG, INFO, WARN, ERROR, FATAL
%r ส่งออกจำนวนมิลลิวินาทีที่ใช้ตั้งแต่เริ่มต้นแอปพลิเคชันเพื่อส่งออกข้อมูลบันทึก %c ส่งออกหมวดหมู่ที่เกี่ยวข้อง ซึ่งโดยปกติจะเป็นชื่อเต็มของคลาส %t ส่งออกชื่อของเธรดที่สร้างเหตุการณ์บันทึก %n เอาต์พุตการขึ้นบรรทัดใหม่และการป้อนอักขระบรรทัด แพลตฟอร์ม Windows คือ "/r/n" แพลตฟอร์ม Unix คือ "/n"
%d ส่งออกวันที่หรือเวลาของจุดเวลาบันทึก รูปแบบเริ่มต้นคือ ISO8601 คุณยังสามารถระบุรูปแบบในภายหลังได้ เช่น: %d{yyy MMM dd HH:mm:ss, SSS} : 18 ตุลาคม 2545 22:10:28, 921
%l แสดงผลตำแหน่งที่เกิดเหตุการณ์บันทึก รวมถึงชื่อหมวดหมู่ เธรดที่เกิดเหตุการณ์ และหมายเลขบรรทัดในโค้ด ตัวอย่าง: Testlog4.main(TestLog4.java: 10)
2. เริ่มต้น Logger ในโค้ด: 1) เรียกใช้เมธอด BasicConfigurator.configure() ในโปรแกรม: เพิ่ม ConsoleAppender ไปยังตัวบันทึกรูท ตั้งค่ารูปแบบเอาต์พุตเป็น "%-4r [%t] %-5p %c %x - %m%n" ผ่าน PatternLayout และระดับเริ่มต้นสำหรับตัวบันทึกที่รูทคือ Level.DEBUG
2) การกำหนดค่าถูกวางไว้ในไฟล์ ชื่อไฟล์จะถูกส่งผ่านพารามิเตอร์บรรทัดคำสั่ง และแยกวิเคราะห์และกำหนดค่าผ่าน PropertyConfigurator.configure(args[x]);
3) การกำหนดค่าถูกวางไว้ในไฟล์ ชื่อไฟล์และข้อมูลอื่น ๆ จะถูกส่งผ่านตัวแปรสภาพแวดล้อม และใช้กระบวนการเริ่มต้นเริ่มต้นของ log4j เพื่อแยกวิเคราะห์และกำหนดค่า
4) การกำหนดค่าจะอยู่ในไฟล์ ชื่อไฟล์และข้อมูลอื่น ๆ จะถูกส่งผ่านการกำหนดค่าแอปพลิเคชันเซิร์ฟเวอร์ และใช้เซิร์ฟเล็ตพิเศษเพื่อทำให้การกำหนดค่าเสร็จสมบูรณ์
3. ตั้งค่าระดับเอาต์พุตบันทึกสำหรับ Appender ที่แตกต่างกัน:
เมื่อทำการดีบั๊กระบบ เรามักจะใส่ใจกับเอาต์พุตบันทึกระดับข้อยกเว้นเท่านั้น แต่โดยปกติแล้ว ทุกระดับของเอาต์พุตจะอยู่ในไฟล์เดียว หากระดับเอาต์พุตบันทึกคือ BUG! - แล้วค่อยไปหามัน..
ในเวลานี้ เราอาจคิดว่าคงจะดีหากเราสามารถส่งออกข้อมูลข้อยกเว้นไปยังไฟล์แยกกันได้ แน่นอนว่า Log4j มีฟังก์ชันดังกล่าวอยู่แล้ว เราเพียงแต่ต้องแก้ไข Appender's Threshold ในการกำหนดค่าเพื่อให้บรรลุผลดังตัวอย่างต่อไปนี้:
[ไฟล์กำหนดค่า]
คัดลอกรหัสรหัส ดังต่อไปนี้:
### กำหนดระดับบันทึก ###
log4j.rootLogger = ดีบัก, stdout, D, E
###ส่งออกไปยังคอนโซล###
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{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
### ส่งออกไปยังไฟล์บันทึก###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = บันทึก/log.log
log4j.appender.D.Append = จริง
log4j.appender.D.Threshold = DEBUG ## บันทึกเอาต์พุตที่สูงกว่าระดับ DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### บันทึกข้อมูลข้อยกเว้นลงในไฟล์แยกต่างหาก ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/error.log ## ชื่อไฟล์บันทึกข้อยกเว้น
log4j.appender.D.Append = จริง
log4j.appender.D.Threshold = ข้อผิดพลาด ## เฉพาะบันทึกเอาต์พุตที่สูงกว่าระดับข้อผิดพลาดเท่านั้น!!!
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
[ใช้ในโค้ด]
TestLog4j คลาสสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) {
PropertyConfigurator.configure( " D:/Code/conf/log4j.properties " );
คนตัดไม้ คนตัดไม้ = Logger.getLogger(TestLog4j.class );
logger.debug( "แก้จุดบกพร่อง" );
logger.error( "ข้อผิดพลาด" );
-
-
เรียกใช้และดูว่าข้อมูลข้อยกเว้นถูกบันทึกไว้ในไฟล์ error.log แยกต่างหากหรือไม่