Masuk kembali GELF
Penambah logback untuk mengirim pesan GELF (Graylog Extended Log Format) tanpa ketergantungan tambahan.
Fitur
- UDP (dengan potongan)
- TCP (dengan atau tanpa enkripsi TLS)
- HTTP
- Kompresi GZIP dan ZLIB (dalam mode UDP dan HTTP)
- Penyeimbangan beban sisi klien (round-robin)
- Penerusan MDC (Konteks Diagnostik yang Dipetakan)
- Penerusan data penelepon
- Penerusan bidang statis
- Meneruskan akar penyebab pengecualian
- Tidak ada ketergantungan runtime selain Logback
Persyaratan
- Jawa 11
- Masuk kembali 1.5.7
Contoh
Konfigurasi UDP sederhana:
< 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 >
Konfigurasi TCP sederhana:
< 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 sederhana dengan konfigurasi 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 >
Konfigurasi HTTP sederhana:
< 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 >
Temukan contoh lebih lanjut di direktori contoh.
Konfigurasi
Penambah
de.siegmar.logbackgelf.GelfUdpAppender
- greylogHost : IP atau nama host server greylog. Jika nama host ditetapkan ke beberapa alamat ip, round-robin akan digunakan.
- greylogPort : Port server greylog. Bawaan: 12201.
- maxChunkSize : Ukuran maksimum potongan GELF dalam byte. Ukuran potongan default adalah 508 - ini mencegah fragmentasi paket IP. Ini juga merupakan jumlah minimum yang disarankan. Ukuran potongan maksimum yang didukung adalah 65.467 byte.
- compressionMethod : Metode kompresi yang akan digunakan (NONE, GZIP atau ZLIB). Bawaan: GZIP.
- messageIdSupplier : Mekanisme yang menyediakan id pesan unik yang diperlukan oleh protokol GELF UDP. Bawaan:
de.siegmar.logbackgelf.MessageIdSupplier
. - encoder : Lihat Konfigurasi encoder di bawah.
de.siegmar.logbackgelf.GelfTcpAppender
- greylogHost : IP atau nama host server greylog. Jika nama host ditetapkan ke beberapa alamat ip, round-robin akan digunakan.
- greylogPort : Port server greylog. Bawaan: 12201.
- connectTimeout : Waktu maksimum (dalam milidetik) untuk menunggu pembuatan koneksi. Nilai 0 menonaktifkan batas waktu koneksi. Default: 15.000 milidetik.
- socketTimeout : Waktu maksimum (dalam milidetik) untuk diblokir saat membaca soket. Nilai 0 menonaktifkan batas waktu soket. Default: 5.000 milidetik.
- reconnectInterval : Interval waktu (dalam detik) setelah koneksi yang ada ditutup dan dibuka kembali. Nilai -1 menonaktifkan sambungan ulang otomatis. Default: 60 detik.
- maxRetries : Jumlah percobaan ulang. Nilai 0 menonaktifkan upaya percobaan ulang. Bawaan: 2.
- retryDelay : Waktu (dalam milidetik) antara upaya percobaan ulang. Diabaikan jika maxRetries adalah 0. Default: 3.000 milidetik.
- poolSize : Jumlah koneksi tcp bersamaan (minimal 1). Bawaan: 2.
- poolMaxWaitTime : Jumlah waktu maksimum (dalam milidetik) untuk menunggu koneksi tersedia dari pool. Nilai -1 menonaktifkan batas waktu. Default: 5.000 milidetik.
- poolMaxIdleTime : Jumlah waktu maksimum (dalam detik) dimana koneksi gabungan dapat menganggur sebelum dianggap 'basi' dan tidak akan digunakan kembali. Nilai -1 menonaktifkan fitur waktu idle maksimal. Default: -1 (dinonaktifkan).
- encoder : Lihat Konfigurasi encoder di bawah.
de.siegmar.logbackgelf.GelfTcpTlsAppender
- Semuanya dari GelfTcpAppender
- insecure : Jika benar, lewati validasi sertifikat TLS. Anda tidak boleh menggunakan ini dalam produksi! Bawaan: salah.
de.siegmar.logbackgelf.GelfHttpAppender
- uri : HTTP(s) URI server greylog (misalnya https://my.server:12201/gelf).
- insecure : Jika benar, lewati validasi sertifikat TLS. Anda tidak boleh menggunakan ini dalam produksi! Bawaan: salah.
- connectTimeout : Waktu maksimum (dalam milidetik) untuk menunggu pembuatan koneksi. Nilai 0 menonaktifkan batas waktu koneksi. Default: 15.000 milidetik.
- requestTimeout : Waktu maksimum (dalam milidetik) untuk menunggu respons. Nilai 0 menonaktifkan batas waktu. Default: 5.000 milidetik.
- maxRetries : Jumlah percobaan ulang. Nilai 0 menonaktifkan upaya percobaan ulang. Bawaan: 2.
- retryDelay : Waktu (dalam milidetik) antara upaya percobaan ulang. Diabaikan jika maxRetries adalah 0. Default: 3.000 milidetik.
- compressionMethod : Metode kompresi yang akan digunakan (NONE, GZIP atau ZLIB). Bawaan: GZIP.
- encoder : Lihat Konfigurasi encoder di bawah.
Pembuat enkode
de.siegmar.logbackgelf.GelfEncoder
- originHost : Nama host asal - akan terdeteksi secara otomatis jika tidak ditentukan.
- includeRawMessage : Jika benar, pesan mentah (dengan placeholder argumen) juga akan dikirim. Bawaan: salah.
- includeKeyValues : Jika benar, pasangan nilai kunci juga akan dikirim. Bawaan: benar.
- includeMarker : Jika benar, penanda logback juga akan dikirim. Bawaan: salah.
- includeMdcData : Jika benar, kunci/nilai MDC juga akan dikirim. Bawaan: benar.
- includeCallerData : Jika benar, data pemanggil (file sumber, metode, nama kelas, dan baris) juga akan dikirim. Bawaan: salah.
- includeRootCauseData : Jika benar, pengecualian akar penyebab dari pengecualian yang diteruskan dengan pesan log akan diekspos di bidang root_cause_class_name dan root_cause_message. Bawaan: salah.
- includeLevelName : Jika benar, nama level log (misalnya DEBUG) juga akan dikirimkan. Bawaan: salah.
- levelNameKey : Kunci (yaitu nama field) yang harus digunakan untuk nama level log. Ini hanya relevan jika includeLevelName benar. Bawaan: nama_level.
- loggerNameKey : Kunci (yaitu nama field) yang harus digunakan untuk nama logger. Bawaan: nama_logger.
- threadNameKey : Kunci (yaitu nama field) yang harus digunakan untuk nama thread. Bawaan: nama_utas.
- appendNewline : Jika benar, pemisah baris baru yang bergantung pada sistem akan ditambahkan di akhir setiap pesan. Jangan gunakan ini bersama dengan penambah TCP/UDP/HTTP, karena ini hanya masuk akal untuk logging konsol!
- shortMessageLayout : Format pesan singkat. Bawaan:
"%m%nopex"
. - fullMessageLayout : Format pesan lengkap (Stacktrace). Bawaan:
"%m%n"
. - numberAsString : Mencatat angka sebagai String. Bawaan: salah.
- staticFields : Bidang statis tambahan untuk dikirim ke greylog. Default: tidak ada.
Pemecahan masalah
Jika Anda mengalami masalah, aktifkan mode debug dan periksa log.
< configuration debug = " true " >
...
</ configuration >