@logbrew/sdk 0.1.40 و@logbrew/node
0.1.24 و@logbrew/express 0.1.10. وتعرض كل كتلة مخرجات مخرجاتها الفعلية.
اختر Winston أو Pino
تكتب المكتبتان كلتاهما سجلات JSON منظمة. احتفظ بالمكتبة التي يستخدمها تطبيقك بالفعل. ويختلف إعداد LogBrew لكل منهما.جهّز مشروعًا في LogBrew
1
أنشئ مفتاحًا للمشروع
سجّل الدخول باستخدام الـ CLI. أنشئ مشروعًا وخزّن مفتاح
الاستيعاب الخاص به في ملف لا يقرؤه إلا مالكه.لا يطبع الـ CLI المفتاح. في بيئة الإنتاج، استخدم مدير الأسرار في منصتك.
2
ثبّت الحزم
تتطلب الحزم Node.js 18.19 أو أحدث. ثبّت Winston أو Pino أو كليهما.
3
اضبط المفتاح وهوية النشر
createLogBrewNodeClient() المفتاح من LOGBREW_SERVER_API_KEY. واسم
الخدمة هو قيمة name في package.json. اضبط LOGBREW_SERVICE_NAME
لاستخدام اسم مختلف. تستخدم الأمثلة وحدات ES، لذلك اضبط "type": "module" في
package.json.مستويات السجلات في Node.js
لكل مكتبة أسماء مستويات وأرقام خاصة بها. يخزّن LogBrew 4 مستويات ويحتفظ بالمستوى الأصلي في البيانات الوصفية.
في Winston، الرقم الأقل أشد خطورة. وفي Pino، الرقم الأعلى أشد خطورة. اضبط
info
في بيئة الإنتاج، واضبط debug لتشخيص قصير فقط.
مسجِّل Winston
احفظ هذا الملف باسمwinston-app.js. يُسقط التنسيق الأول السجلات التي تقل عن
مستوى المسجِّل قبل أن تصل إلى أي وسيلة نقل. تستقبل وسيلة نقل LogBrew كل سجل
يكتبه المسجِّل، لذلك تحتاج إلى هذه التصفية.
node winston-app.js. تتلقى وحدة التحكم سطر JSON واحدًا لكل سجل بالمستوى
info أو أعلى. وقد اختُصر تتبّع المكدّس هنا.
context.*.
ترسل وسيلة النقل اسم الخطأ ورسالته، لكن دون تتبّع المكدّس. اضبط
includeErrorStack: true في createLogBrewWinstonTransport() لإرسال تتبّع
المكدّس. وتصبح كل رسالة أيضًا Breadcrumb (حدثًا قصيرًا مسجَّلًا قبل وقوع
المشكلة) في المشكلة التالية. اضبط breadcrumbs: false لإيقاف ذلك.
مسجِّل Pino
احفظ هذا الملف باسمpino-app.js. استدعِ installLogBrewPinoInstrumentation()
مرة واحدة قبل أول سجل. فهو يقرأ كل سجل Pino مكتمل. ويظل Pino يكتب إلى وجهته
الخاصة.
node pino-app.js. وقد اختُصر اسم المضيف وتتبّع المكدّس هنا.
debug قبل أن يراه LogBrew.
الحقل
token غير موجود في LogBrew. يُسقط LogBrew حقول بيانات الاعتماد وملفات
تعريف الارتباط ومتن الطلب والاستعلام وعنوان URL وتتبّع المكدّس، ويُبقي مسارات
redact في Pino ضابطًا ثانيًا. الحقول pid وhostname وtime افتراضية في
Pino، لذلك لا ينسخها LogBrew.
يتطلب الالتقاط التلقائي Pino 9.11 أو أحدث ضمن الفرع 9.x، أو Pino 10.1 أو أحدث.
لإصدارات Pino الأقدم، استخدم createLogBrewPinoDestination() من @logbrew/sdk
وجهةً لـ Pino.
لقراءة مخرجات Pino أثناء التطوير، مرّرها إلى pino-pretty.
مسجِّل Express
ينشئlogbrewMiddleware() Span طلب واحدًا لكل طلب. ويُبلغ
logbrewErrorHandler() عن الأخطاء كمشكلات. ويحصل سجل Pino داخل الطلب على معرّف
التتبّع ومعرّف الـ Span لذلك الطلب. احفظ هذا الملف باسم express-app.js.
يستخدم اسم الـ Span قالب المسار وليس المسار الفعلي. ولا يحمل سجل
listening on 3000 أي تتبّع، لأنه خارج أي طلب.
اترك الوسيط (middleware) ينشئ عملاء الطلبات الخاصين به. لا تمرّر client
المشترك على مستوى العملية إلى logbrewMiddleware() أو logbrewErrorHandler().
ويغلق الوسيط عميل الطلب بعد كل استجابة.
أضف التتبّع إلى سجلات Winston
في Winston، مرّر التتبّع النشط إلى وسيلة النقل.logbrewTransport إلى قائمة transports في المسجِّل. عندها يحمل سجل
Winston داخل طلب Express معرّف التتبّع ومعرّف الـ Span لذلك الطلب.
اقرأ السجلات المخزّنة
<trace_id> من تتبّع أو من مشكلة.
للقراءة من CI أو من وكيل برمجة، استخدم مفتاح القراءة الخاص بالمشروع. راجع تحقّق
من الإعداد.
أوقف التطبيق دون فقدان السجلات
يرسل العميل الأحداث المنتظرة بعد ثانية واحدة من أول حدث أو عند بلوغ 50 حدثًا. وعندما تفرغ حلقة الأحداث، يرسل العميل الأحداث المتبقية مدة ثانيتين على الأكثر. ويتخطىprocess.exit() والإشارات هذه الخطوة. استدعِ await client.shutdown()
قبل الخروج، كما يفعل معالج SIGTERM في مثال Express.
استكشاف الأخطاء وإصلاحها
لاختيار حقول السجلات، راجع التسجيل المنظم.
لأطر العمل الأخرى، راجع دمج SDK.
