تسجيل العودة GELF
مُلحق Logback لإرسال رسائل GELF (Graylog Extended Log Format) بدون أي تبعيات إضافية.
سمات
- UDP (مع التقطيع)
- TCP (مع أو بدون تشفير TLS)
- HTTP (المواقع)
- ضغط GZIP وZLIB (في وضع UDP وHTTP)
- موازنة التحميل من جانب العميل (جولة روبن)
- إعادة توجيه MDC (سياق التشخيص المعين)
- إعادة توجيه بيانات المتصل
- إعادة توجيه الحقول الثابتة
- إعادة توجيه السبب الجذري للاستثناء
- لا توجد تبعيات وقت التشغيل بجانب Logback
متطلبات
- جافا 11
- تسجيل العودة 1.5.7
أمثلة
تكوين 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
- GraylogHost : IP أو اسم المضيف لخادم Graylog. إذا تحول اسم المضيف إلى عناوين IP متعددة، فسيتم استخدام round-robin.
- GraylogPort : منفذ خادم Graylog. الافتراضي: 12201.
- maxChunkSize : الحد الأقصى لحجم قطع GELF بالبايت. حجم القطعة الافتراضي هو 508 - وهذا يمنع تجزئة حزمة IP. وهذا أيضًا هو الحد الأدنى الموصى به. الحد الأقصى لحجم القطعة المدعومة هو 65,467 بايت.
- طريقة الضغط : طريقة الضغط المستخدمة (NONE أو GZIP أو ZLIB). الافتراضي: GZIP.
- messageIdSupplier : الآلية التي توفر معرفات الرسائل الفريدة المطلوبة بواسطة بروتوكول GELF UDP. الافتراضي:
de.siegmar.logbackgelf.MessageIdSupplier
. - التشفير : راجع تكوين التشفير أدناه.
de.siegmar.logbackgelf.GelfTcpAppender
- GraylogHost : IP أو اسم المضيف لخادم Graylog. إذا تحول اسم المضيف إلى عناوين IP متعددة، فسيتم استخدام round-robin.
- GraylogPort : منفذ خادم Graylog. الافتراضي: 12201.
- ConnectTimeout : الحد الأقصى للوقت (بالملي ثانية) لانتظار إنشاء اتصال. تعمل القيمة 0 على تعطيل مهلة الاتصال. الافتراضي: 15000 مللي ثانية.
- المقبس : الحد الأقصى للوقت (بالمللي ثانية) للحظر عند قراءة المقبس. تعمل القيمة 0 على تعطيل مهلة مأخذ التوصيل. الافتراضي: 5000 مللي ثانية.
- reconnectInterval : الفاصل الزمني (بالثواني) بعد إغلاق الاتصال الموجود وإعادة فتحه. تعمل القيمة -1 على تعطيل عمليات إعادة الاتصال التلقائية. الافتراضي: 60 ثانية.
- maxRetries : عدد مرات إعادة المحاولة. القيمة 0 تعطل محاولات إعادة المحاولة. الافتراضي: 2.
- retryDelay : الوقت (بالملي ثانية) بين محاولات إعادة المحاولة. يتم تجاهله إذا كانت قيمة maxRetries تساوي 0. الافتراضي: 3000 مللي ثانية.
- حجم التجمع : عدد اتصالات TCP المتزامنة (الحد الأدنى 1). الافتراضي: 2.
- PoolMaxWaitTime : الحد الأقصى للوقت (بالمللي ثانية) لانتظار إتاحة الاتصال من التجمع. قيمة -1 تعطل المهلة. الافتراضي: 5000 مللي ثانية.
- poolMaxIdleTime : الحد الأقصى للوقت (بالثواني) الذي يمكن أن يكون فيه الاتصال المجمع خاملاً قبل اعتباره "قديمًا" ولن يتم إعادة استخدامه. تعمل القيمة -1 على تعطيل ميزة الحد الأقصى لوقت الخمول. الافتراضي: -1 (معطل).
- التشفير : راجع تكوين التشفير أدناه.
de.siegmar.logbackgelf.GelfTcpTlsAppender
- كل شيء من GelfTcpAppender
- غير آمن : إذا كان صحيحًا، فتخطى التحقق من صحة شهادة TLS. يجب أن لا تستخدم هذا في الإنتاج! الافتراضي: خطأ.
de.siegmar.logbackgelf.GelfHttpAppender
- uri : HTTP(s) URI لخادم Graylog (على سبيل المثال https://my.server:12201/gelf).
- غير آمن : إذا كان صحيحًا، فتخطى التحقق من صحة شهادة TLS. يجب أن لا تستخدم هذا في الإنتاج! الافتراضي: خطأ.
- ConnectTimeout : الحد الأقصى للوقت (بالملي ثانية) لانتظار إنشاء اتصال. تعمل القيمة 0 على تعطيل مهلة الاتصال. الافتراضي: 15000 مللي ثانية.
- requestTimeout : الحد الأقصى للوقت (بالملي ثانية) لانتظار الرد. القيمة 0 تعطل المهلة. الافتراضي: 5000 مللي ثانية.
- maxRetries : عدد مرات إعادة المحاولة. القيمة 0 تعطل محاولات إعادة المحاولة. الافتراضي: 2.
- retryDelay : الوقت (بالمللي ثانية) بين محاولات إعادة المحاولة. يتم تجاهله إذا كانت قيمة maxRetries تساوي 0. الافتراضي: 3000 مللي ثانية.
- طريقة الضغط : طريقة الضغط المستخدمة (NONE أو GZIP أو ZLIB). الافتراضي: GZIP.
- التشفير : راجع تكوين التشفير أدناه.
التشفير
de.siegmar.logbackgelf.GelfEncoder
- OriginHost : اسم المضيف الأصلي - سيتم اكتشافه تلقائيًا إذا لم يتم تحديده.
- includeRawMessage : إذا كان صحيحًا، فسيتم إرسال الرسالة الأولية (مع العناصر النائبة للوسيطة) أيضًا. الافتراضي: خطأ.
- includeKeyValues : إذا كان صحيحًا، فسيتم إرسال أزواج القيمة الرئيسية أيضًا. الافتراضي: صحيح.
- includeMarker : إذا كان صحيحًا، فسيتم إرسال علامات تسجيل الدخول أيضًا. الافتراضي: خطأ.
- 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"
. - NumbersAsString : تسجيل الأرقام كسلسلة. الافتراضي: خطأ.
- الحقول الثابتة : حقول ثابتة إضافية لإرسالها إلى Graylog. الافتراضيات: لا شيء.
استكشاف الأخطاء وإصلاحها
إذا كانت لديك أية مشكلات، فقم بتمكين وضع التصحيح وتحقق من السجلات.
< configuration debug = " true " >
...
</ configuration >