รายชื่อผู้ต่อท้าย

คนตัดไม้ช่วยให้คุณบันทึกข้อมูลลงในไฟล์หลายไฟล์พร้อมกัน สตรีมข้อมูลเอาต์พุตดังกล่าวเรียกว่าตัวผนวก (จากส่วนต่อท้าย) มีตัวต่อมาตรฐานค่อนข้างน้อย ดังนั้นเราจะครอบคลุมเฉพาะตัวที่ได้รับความนิยมสูงสุด:

ภาคผนวก คำอธิบาย
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