ล็อกแบ็ค GELF
โปรแกรม Logback สำหรับการส่งข้อความ GELF (Graylog Extended Log Format) โดยไม่มีการอ้างอิงเพิ่มเติม
คุณสมบัติ
- UDP (พร้อมการแบ่งส่วน)
- TCP (มีหรือไม่มีการเข้ารหัส TLS)
- HTTP
- การบีบอัด GZIP และ ZLIB (ในโหมด UDP และ HTTP)
- การทำโหลดบาลานซ์ฝั่งไคลเอ็นต์ (แบบวนรอบ)
- การส่งต่อ MDC (บริบทการวินิจฉัยที่แมป)
- การส่งต่อข้อมูลผู้โทร
- การส่งต่อฟิลด์แบบคงที่
- การส่งต่อสาเหตุของข้อยกเว้น
- ไม่มีการพึ่งพารันไทม์ข้าง Logback
ความต้องการ
ตัวอย่าง
การกำหนดค่า UDP อย่างง่าย:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfUdpAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
< root level = " debug " >
< appender-ref ref = " GELF " />
</ root >
</ configuration >
การกำหนดค่า TCP อย่างง่าย:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfTcpAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
TCP อย่างง่ายพร้อมการกำหนดค่า TLS:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfTcpTlsAppender " >
< graylogHost >localhost</ graylogHost >
< graylogPort >12201</ graylogPort >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
การกำหนดค่า HTTP อย่างง่าย:
< configuration >
< appender name = " GELF " class = " de.siegmar.logbackgelf.GelfHttpAppender " >
< uri >https://my.server:12201/gelf</ uri >
</ appender >
<!-- Use AsyncAppender to prevent slowdowns -->
< appender name = " ASYNC GELF " class = " ch.qos.logback.classic.AsyncAppender " >
< appender-ref ref = " GELF " />
< neverBlock >true</ neverBlock >
</ appender >
< root level = " debug " >
< appender-ref ref = " ASYNC GELF " />
</ root >
</ configuration >
ค้นหาตัวอย่างขั้นสูงเพิ่มเติมในไดเร็กทอรีตัวอย่าง
การกำหนดค่า
ภาคผนวก
de.siegmar.logbackgelf.GelfUdpAppender
- greylogHost : IP หรือชื่อโฮสต์ของเซิร์ฟเวอร์ greylog หากชื่อโฮสต์แปลงเป็นที่อยู่ IP หลายรายการ ระบบจะใช้ Round-robin
- greylogPort : พอร์ตของเซิร์ฟเวอร์ greylog ค่าเริ่มต้น: 12201
- maxChunkSize : ขนาดสูงสุดของชิ้น GELF ในหน่วยไบต์ ขนาดก้อนเริ่มต้นคือ 508 ซึ่งช่วยป้องกันการกระจายตัวของแพ็กเก็ต IP นี่เป็นขั้นต่ำที่แนะนำเช่นกัน ขนาดก้อนที่รองรับสูงสุดคือ 65,467 ไบต์
- CompressionMethod : วิธีการบีบอัดที่ใช้ (NONE, GZIP หรือ ZLIB) ค่าเริ่มต้น: GZIP
- messageIdSupplier : กลไกที่ให้รหัสข้อความเฉพาะที่จำเป็นสำหรับโปรโตคอล GELF UDP ค่าเริ่มต้น:
de.siegmar.logbackgelf.MessageIdSupplier
- ตัวเข้ารหัส : ดูการกำหนดค่าตัวเข้ารหัสด้านล่าง
de.siegmar.logbackgelf.GelfTcpAppender
- greylogHost : IP หรือชื่อโฮสต์ของเซิร์ฟเวอร์ greylog หากชื่อโฮสต์แปลงเป็นที่อยู่ IP หลายรายการ ระบบจะใช้ Round-robin
- greylogPort : พอร์ตของเซิร์ฟเวอร์ greylog ค่าเริ่มต้น: 12201
- ConnectTimeout : เวลาสูงสุด (เป็นมิลลิวินาที) เพื่อรอการสร้างการเชื่อมต่อ ค่า 0 ปิดใช้งานการหมดเวลาการเชื่อมต่อ ค่าเริ่มต้น: 15,000 มิลลิวินาที
- socketTimeout : เวลาสูงสุด (เป็นมิลลิวินาที) ที่จะบล็อกเมื่ออ่านซ็อกเก็ต ค่า 0 ปิดใช้งานการหมดเวลาซ็อกเก็ต ค่าเริ่มต้น: 5,000 มิลลิวินาที
- reconnectInterval : ช่วงเวลา (เป็นวินาที) หลังจากที่การเชื่อมต่อที่มีอยู่ถูกปิดและเปิดใหม่อีกครั้ง ค่า -1 ปิดใช้งานการเชื่อมต่อใหม่อัตโนมัติ ค่าเริ่มต้น: 60 วินาที
- maxRetries : จำนวนการลองใหม่ ค่า 0 ปิดใช้งานความพยายามในการลองใหม่ ค่าเริ่มต้น: 2
- retryDelay : เวลา (เป็นมิลลิวินาที) ระหว่างการลองอีกครั้ง ละเว้นถ้า maxRetries เป็น 0 ค่าเริ่มต้น: 3,000 มิลลิวินาที
- poolSize : จำนวนการเชื่อมต่อ TCP พร้อมกัน (ขั้นต่ำ 1) ค่าเริ่มต้น: 2
- poolMaxWaitTime : ระยะเวลาสูงสุด (เป็นมิลลิวินาที) เพื่อรอให้การเชื่อมต่อพร้อมใช้งานจากพูล ค่า -1 ปิดใช้งานการหมดเวลา ค่าเริ่มต้น: 5,000 มิลลิวินาที
- poolMaxIdleTime : จำนวนเวลาสูงสุด (เป็นวินาที) ที่การเชื่อมต่อแบบพูลสามารถไม่ได้ใช้งานก่อนที่จะถือว่า 'เก่า' และจะไม่ถูกนำมาใช้ซ้ำ ค่า -1 จะปิดใช้งานคุณลักษณะเวลาว่างสูงสุด ค่าเริ่มต้น: -1 (ปิดใช้งาน)
- ตัวเข้ารหัส : ดูการกำหนดค่าตัวเข้ารหัสด้านล่าง
de.siegmar.logbackgelf.GelfTcpTlsAppender
- ทุกอย่างจาก GelfTcpAppender
- ไม่ปลอดภัย : หากเป็นจริง ให้ข้ามการตรวจสอบใบรับรอง TLS คุณไม่ควรใช้สิ่งนี้ในการผลิต! ค่าเริ่มต้น: เท็จ
de.siegmar.logbackgelf.GelfHttpAppender
- uri : HTTP(s) URI ของเซิร์ฟเวอร์ greylog (เช่น https://my.server:12201/gelf)
- ไม่ปลอดภัย : หากเป็นจริง ให้ข้ามการตรวจสอบใบรับรอง TLS คุณไม่ควรใช้สิ่งนี้ในการผลิต! ค่าเริ่มต้น: เท็จ
- ConnectTimeout : เวลาสูงสุด (เป็นมิลลิวินาที) เพื่อรอการสร้างการเชื่อมต่อ ค่า 0 ปิดใช้งานการหมดเวลาการเชื่อมต่อ ค่าเริ่มต้น: 15,000 มิลลิวินาที
- requestTimeout : เวลาสูงสุด (เป็นมิลลิวินาที) เพื่อรอการตอบกลับ ค่า 0 ปิดใช้งานการหมดเวลา ค่าเริ่มต้น: 5,000 มิลลิวินาที
- maxRetries : จำนวนการลองใหม่ ค่า 0 ปิดใช้งานความพยายามในการลองใหม่ ค่าเริ่มต้น: 2
- retryDelay : เวลา (เป็นมิลลิวินาที) ระหว่างการลองอีกครั้ง ละเว้นถ้า maxRetries เป็น 0 ค่าเริ่มต้น: 3,000 มิลลิวินาที
- CompressionMethod : วิธีการบีบอัดที่ใช้ (NONE, GZIP หรือ ZLIB) ค่าเริ่มต้น: GZIP
- ตัวเข้ารหัส : ดูการกำหนดค่าตัวเข้ารหัสด้านล่าง
ตัวเข้ารหัส
de.siegmar.logbackgelf.GelfEncoder
- originHost : ชื่อโฮสต์ Origin - จะถูกตรวจพบอัตโนมัติหากไม่ได้ระบุ
- includeRawMessage : หากเป็นจริง ข้อความดิบ (พร้อมตัวยึดตำแหน่งอาร์กิวเมนต์) จะถูกส่งไปด้วย ค่าเริ่มต้น: เท็จ
- includeKeyValues : หากเป็นจริง คู่ค่าคีย์จะถูกส่งไปด้วย ค่าเริ่มต้น: จริง
- includeMarker : หากเป็นจริง เครื่องหมาย Logback จะถูกส่งไปด้วย ค่าเริ่มต้น: เท็จ
- includeMdcData : หากเป็นจริง คีย์/ค่า MDC จะถูกส่งไปด้วย ค่าเริ่มต้น: จริง
- includeCallerData : หากเป็นจริง ข้อมูลผู้โทร (ไฟล์ต้นทาง วิธีการ ชื่อคลาส และสาย) จะถูกส่งไปด้วย ค่าเริ่มต้น: เท็จ
- includeRootCauseData : หากเป็นจริง ข้อยกเว้นสาเหตุหลักของข้อยกเว้นที่ส่งผ่านพร้อมกับข้อความบันทึกจะถูกเปิดเผยในฟิลด์ root_cause_class_name และ root_cause_message ค่าเริ่มต้น: เท็จ
- includeLevelName : หากเป็นจริง ชื่อระดับบันทึก (เช่น DEBUG) จะถูกส่งไปด้วย ค่าเริ่มต้น: เท็จ
- levelNameKey : คีย์ (เช่น ชื่อฟิลด์) ที่ควรใช้สำหรับชื่อระดับบันทึก สิ่งนี้เกี่ยวข้องเฉพาะเมื่อ includeLevelName เป็นจริง ค่าเริ่มต้น: ระดับ_ชื่อ
- loggerNameKey : คีย์ (เช่น ชื่อฟิลด์) ที่ควรใช้สำหรับชื่อคนตัดไม้ ค่าเริ่มต้น: logger_name
- threadNameKey : คีย์ (เช่น ชื่อฟิลด์) ที่ควรใช้สำหรับชื่อเธรด ค่าเริ่มต้น: thread_name
- appendNewline : หากเป็นจริง ตัวคั่นขึ้นบรรทัดใหม่ขึ้นอยู่กับระบบจะถูกเพิ่มที่ส่วนท้ายของแต่ละข้อความ อย่าใช้สิ่งนี้ร่วมกับตัวผนวก TCP/UDP/HTTP เนื่องจากนี่เหมาะสมสำหรับการบันทึกคอนโซลเท่านั้น!
- shortMessageLayout : รูปแบบข้อความสั้น ค่าเริ่มต้น:
"%m%nopex"
- fullMessageLayout : รูปแบบข้อความแบบเต็ม (Stacktrace) ค่าเริ่มต้น:
"%m%n"
- numberAsString : บันทึกตัวเลขเป็นสตริง ค่าเริ่มต้น: เท็จ
- staticFields : ฟิลด์คงที่เพิ่มเติมที่จะส่งไปยัง greylog ค่าเริ่มต้น: ไม่มี
การแก้ไขปัญหา
หากคุณมีปัญหาใดๆ ให้เปิดใช้งานโหมดแก้ไขข้อบกพร่องและตรวจสอบบันทึก
< configuration debug = " true " >
...
</ configuration >