รายชื่อผู้ต่อท้าย
คนตัดไม้ช่วยให้คุณบันทึกข้อมูลลงในไฟล์หลายไฟล์พร้อมกัน สตรีมข้อมูลเอาต์พุตดังกล่าวเรียกว่าตัวผนวก (จากส่วนต่อท้าย) มีตัวต่อมาตรฐานค่อนข้างน้อย ดังนั้นเราจะครอบคลุมเฉพาะตัวที่ได้รับความนิยมสูงสุด:
| ภาคผนวก | คำอธิบาย | |
|---|---|---|
| 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
GO TO FULL VERSION