รายชื่อผู้ต่อท้าย
คนตัดไม้ช่วยให้คุณบันทึกข้อมูลลงในไฟล์หลายไฟล์พร้อมกัน สตรีมข้อมูลเอาต์พุตดังกล่าวเรียกว่าตัวผนวก (จากส่วนต่อท้าย) มีตัวต่อมาตรฐานค่อนข้างน้อย ดังนั้นเราจะครอบคลุมเฉพาะตัวที่ได้รับความนิยมสูงสุด:
ภาคผนวก | คำอธิบาย | |
---|---|---|
1 | คอนโซล | พิมพ์ข้อมูลไปยังคอนโซล |
2 | ไฟล์ | ส่งออกข้อมูลไปยังไฟล์ |
3 | DailyRollingFile | ส่งออกข้อมูลไปยังไฟล์ ไฟล์จะถูกเขียนทับเป็นวงจร |
4 | ซิงค์ | อนุญาตให้คุณเขียนข้อมูลไปยัง appender อื่นแบบอะซิงโครนัส |
5 | เบ้า | เขียนข้อมูลไปยังซ็อกเก็ตเฉพาะ |
6 | เจดีบีซี | เขียนข้อความไปยังฐานข้อมูลโดยใช้โปรโตคอล JDBC |
7 | จป | เขียนข้อความไปยังฐานข้อมูลโดยใช้โปรโตคอล JPA |
8 | http | ส่งเหตุการณ์ผ่านโปรโตคอล HTTP ไปยังเซิร์ฟเวอร์ระยะไกล |
9 | เอสเอ็มทีพี | เก็บข้อความในบัฟเฟอร์ แล้วส่งเป็นอีเมล |
เอกสารที่ดีสำหรับ appenders ทั้งหมดอยู่ในเว็บไซต์ทางการ ของพวกเขา
และด้านล่างเราจะพิจารณาสิ่งที่ได้รับความนิยมและเรียบง่ายที่สุด
ConsoleAppender
appender ที่ง่ายที่สุดConsoleApender
คือ อย่างที่คุณเดาได้ เขาแค่เขียนข้อความไปที่คอนโซล มีพารามิเตอร์ที่น่าสนใจหลายประการสำหรับเรา:
คุณลักษณะ | ||
---|---|---|
1 | ชื่อ | ชื่อผู้ต่อท้าย |
2 | กรอง | ให้คุณกรองข้อความบางส่วน |
3 | เค้าโครง | ระบุการจัดรูปแบบของข้อความเมื่อส่งออก |
4 | เป้า | ระบุตำแหน่งที่จะเขียน: SYTEM_OUT หรือSYSTEM_ERR |
การกำหนดค่าทำได้ง่ายมาก:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
FileAppender
appender ที่มีประโยชน์ที่สุดFileAppender
คือ ไม่เหมือนกับConsoleAppender
ที่เขาเขียนข้อความลงในไฟล์ ซึ่งมีประโยชน์มากเมื่อแอปพลิเคชันของคุณทำงานอยู่ที่ใดที่หนึ่งบนเซิร์ฟเวอร์ มีพารามิเตอร์มากมายเพราะ จะต้องสามารถเขียนไฟล์บนระบบปฏิบัติการที่แตกต่างกันได้
แต่เราจะพิจารณาเฉพาะที่นิยมมากที่สุดเท่านั้น
1 | ชื่อ | ระบุชื่อของผู้ผนวก |
2 | กรอง | ให้คุณกรองข้อความบางส่วน |
3 | เค้าโครง | ระบุการจัดรูปแบบของข้อความเมื่อส่งออก |
4 | ชื่อไฟล์ | ระบุชื่อไฟล์ที่จะเขียนข้อความ |
5 | ผนวก | ถ้าtrue ข้อความจะถูกเพิ่มไปยังบันทึกเก่า ถ้าfalse - ไฟล์บันทึกจะถูกสร้างขึ้นใหม่ทุกครั้งที่เริ่มแอปพลิเคชัน |
6 | ขนาดบัฟเฟอร์ | กำหนดขนาดบัฟเฟอร์เป็นไบต์ |
7 | ล้างทันที | ถ้าtrue แล้วแต่ละข้อความจะถูกเขียนลงดิสก์ทันที (โดยไม่มีบัฟเฟอร์) บันทึกเริ่มทำงานช้า แต่ช่วยให้คุณไม่ต้องสูญเสียข้อมูลเมื่อโปรแกรมหยุดทำงาน |
คุณรู้วิธีทำงานกับไฟล์ได้ดีอยู่แล้ว ดังนั้นการตั้งค่าเหล่านี้จึงไม่ใช่เรื่องใหม่สำหรับคุณ การกำหนดค่าตัวบันทึกนั้นง่ายกว่าตัวบันทึกคอนโซล:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
RollingFileAppender
appender ที่นิยมมากที่สุดคือRollingFileAppender
. ไม่เหมือนตรงที่FileAppender
อนุญาตให้คุณแบ่งบันทึกเป็นไฟล์ขนาดเล็กจำนวนมาก สิ่งนี้สำคัญมากสำหรับบันทึกขนาดใหญ่ นอกจากนี้ยังช่วยให้คุณตั้งกฎสำหรับสิ่งที่ต้องทำกับไฟล์เก่าหลังจากเริ่มเขียนไฟล์ใหม่แล้ว
และ appender นี้มีเกือบร้อยการตั้งค่าที่แตกต่างกัน คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับพวกเขาได้ที่ ลิงค์ .
พิจารณาคุณสมบัติที่ได้รับความนิยมสูงสุดของ appender นี้:
คุณลักษณะ | ||
---|---|---|
1 | ชื่อ | ระบุชื่อของผู้ผนวก |
2 | กรอง | ให้คุณกรองข้อความบางส่วน |
3 | เค้าโครง | ระบุการจัดรูปแบบของข้อความเมื่อส่งออก |
4 | ชื่อไฟล์ | ระบุชื่อไฟล์ที่จะเขียนข้อความ |
5 | ไฟล์รูปแบบ | ระบุรูปแบบการตั้งชื่อสำหรับไฟล์เก็บถาวรที่ไม่ได้เขียนอีกต่อไป |
6 | นโยบาย | ระบุเงื่อนไขเมื่อไฟล์ควรเริ่มเขียนทับ |
7 | กลยุทธ์ | อธิบายสิ่งที่ต้องทำกับไฟล์เก่า เช่น การเก็บถาวร ประวัติการเก็บไว้กี่วัน ฯลฯ |
นี่คือตัวอย่างที่ดี:
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
พารามิเตอร์filePattern
ระบุเทมเพลตสำหรับการเก็บบันทึกเก่า นอกจากนี้ยังมีอีกสองไฟล์ เมื่อทริกเกอร์ ไฟล์ใหม่จะถูกเขียน:
TimeBasedTriggeringPolicy
– จะทำงานหากเริ่มวันใหม่ (วันที่ปัจจุบันเปลี่ยนแปลง)SizeBasedTriggeringPolicy
– จะทำงานหากขนาดไฟล์ถึง 250MB