"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > أفضل ممارسات التسجيل لتطبيق Node.js الخاص بك

أفضل ممارسات التسجيل لتطبيق Node.js الخاص بك

تم النشر بتاريخ 2024-08-23
تصفح:148

Logging Best Practices For Your Node.js App

باعتبارك أحد مطوري Node.js، فإن التسجيل هو كل شيء تقريبًا عندما يتعلق الأمر بتصحيح أخطاء تطبيقاتك ومراقبتها وصيانتها. ولكن هل تستخدم أفضل ممارسات التسجيل؟ دعنا نستكشف بعض تقنيات التسجيل التي يمكن أن تنقل تطبيقات Node.js الخاصة بك إلى المستوى التالي.

لمعرفة المزيد، يمكنك الاطلاع على مشاركة المدونة الكاملة.

1. ونستون: سكين الجيش السويسري لقطع الأشجار

؟ الأداة: ونستون
؟ الوصف: مكتبة تسجيل متعددة الاستخدامات لـ Node.js
؟ الميزات الرئيسية:

  • خيارات نقل متعددة (وحدة التحكم، الملف، قاعدة البيانات)
  • مستويات السجل القابلة للتخصيص
  • يدعم التسجيل بتنسيقات مختلفة (JSON، نص عادي)
javascriptCopyconst winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

2. مورغان: البرنامج الوسيط لتسجيل طلبات HTTP

؟ الأداة: مورغان
؟ الوصف: تبسيط عملية تسجيل طلب HTTP في Express.js
؟ الميزات الرئيسية:

  • تنسيقات التسجيل المحددة مسبقًا
  • دعم الرموز المخصصة
  • سهولة التكامل مع Express.js
javascriptCopyconst express = require('express');
const morgan = require('morgan');

const app = express();
app.use(morgan('combined'));

3. بنيان: تسجيل JSON لـ Node.js

؟ الأداة: بنيان
؟ الوصف: تسجيل JSON منظم لتطبيقات Node.js
؟ الميزات الرئيسية:

  • تنسيق سجل JSON افتراضيًا
  • يدعم قطع الأشجار التابعة للأطفال
  • سطر الأوامر المدمج لعرض السجلات
javascriptCopyconst bunyan = require('bunyan');
const log = bunyan.createLogger({name: "myapp"});

log.info("Hi");
log.warn({lang: 'fr'}, "Au revoir");

4. بينو: مسجل Node.js فائق السرعة

؟ الأداة: بينو
؟ الوصف: تسجيل حمل منخفض مع إخراج JSON
؟ الميزات الرئيسية:

  • أداء سريع للغاية
  • التدوير التلقائي للسجل
  • يدعم قطع الأشجار التابعة للأطفال
javascriptCopyconst pino = require('pino');
const logger = pino();

logger.info('hello world');
logger.error('this is at error level');

5.debug: أداة تصحيح الأخطاء الصغيرة

؟ الأداة: التصحيح
؟ الوصف: أداة مساعدة صغيرة لتصحيح أخطاء Node.js
؟ الميزات الرئيسية:

  • خفيفة الوزن وسهلة الاستخدام
  • تصحيح الأخطاء الانتقائي بمساحات الأسماء
  • دعم المتصفح
javascriptCopyconst debug = require('debug')('http');

debug('booting %o', name);

6. Log4js: التسجيل المرن لجافا سكريبت

؟ الأداة: Log4js
؟ الوصف: تحويل إطار عمل log4j إلى JavaScript
؟ الميزات الرئيسية:

  • مستويات التسجيل الهرمية
  • ملحقات مخرجات متعددة
  • تخطيطات قابلة للتكوين
javascriptCopyconst log4js = require("log4js");
log4js.configure({
  appenders: { cheese: { type: "file", filename: "cheese.log" } },
  categories: { default: { appenders: ["cheese"], level: "error" } }
});

const logger = log4js.getLogger("cheese");
logger.error("Cheese is too ripe!");

7. Elasticsearch وLogstash وKibana (ELK Stack)

؟ الأداة: ELK Stack
؟ الوصف: مجموعة قوية لإدارة السجلات وتحليلها
؟ الميزات الرئيسية:

  • التسجيل المركزي
  • تحليل السجل في الوقت الحقيقي
  • التصورات ولوحات المعلومات
javascriptCopyconst winston = require('winston');
const Elasticsearch = require('winston-elasticsearch');

const esTransportOpts = {
  level: 'info',
  clientOpts: { node: 'http://localhost:9200' }
};
const logger = winston.createLogger({
  transports: [
    new Elasticsearch(esTransportOpts)
  ]
});

8. الحراسة: تتبع الأخطاء ومراقبة الأداء

؟ الأداة: الحراسة
؟ الوصف: تتبع الأخطاء ومراقبة الأداء في الوقت الفعلي
؟ الميزات الرئيسية:

  • التقاط الأخطاء تلقائيًا
  • تتبع الإصدار
  • مراقبة الأداء
javascriptCopyconst Sentry = require("@sentry/node");

Sentry.init({ dsn: "https://[email protected]/0" });

try {
  someFunction();
} catch (e) {
  Sentry.captureException(e);
}

9. بقايا جديدة: مراقبة أداء التطبيق

؟ الأداة: بقايا جديدة
؟ الوصف: مراقبة شاملة لأداء التطبيق
؟ الميزات الرئيسية:

  • مقاييس الأداء في الوقت الفعلي
  • تحليلات الأخطاء
  • الأجهزة المخصصة
javascriptCopyconst newrelic = require('newrelic');

newrelic.setTransactionName('myCustomTransaction');
// Your application code here

10. Loggly: إدارة السجلات المستندة إلى السحابة

؟ الأداة: Logly
؟ الوصف: خدمة إدارة وتحليلات السجلات السحابية
؟ الميزات الرئيسية:

  • إدارة السجل المركزية
  • البحث والتحليل في السجل في الوقت الفعلي
  • لوحات المعلومات والتنبيهات المخصصة
javascriptCopyconst winston = require('winston');
const { Loggly } = require('winston-loggly-bulk');

winston.add(new Loggly({
    token: "YOUR-TOKEN",
    subdomain: "YOUR-SUBDOMAIN",
    tags: ["Winston-NodeJS"],
    json: true
}));

winston.log('info', "Hello World from Node.js!");

نصيحة إضافية: التسجيل المنظم

بغض النظر عن الأداة التي تختارها، فإن تنفيذ التسجيل المنظم يمكن أن يحسن بشكل كبير قدرات تحليل السجل لديك:

javascriptCopylogger.info({
  event: 'user_login',
  userId: user.id,
  timestamp: new Date().toISOString(),
  ipAddress: req.ip
});

باستخدام هذه الأدوات والممارسات الإضافية، سيكون لديك إستراتيجية تسجيل شاملة تغطي كل شيء بدءًا من التصحيح الأساسي وحتى مراقبة أداء التطبيقات المتقدمة. تذكر أن مفتاح التسجيل الفعال هو اختيار الأدوات المناسبة لاحتياجاتك المحددة وتطبيق أفضل الممارسات باستمرار عبر قاعدة التعليمات البرمجية الخاصة بك.

إذا كنت بحاجة إلى مساعدة في تصحيح أخطاء تطبيق الويب الخاص بك، فراجع https://alerty.ai لمعرفة المزيد حول مراقبة الواجهة الأمامية بسهولة.

تسجيل سعيد، وأتمنى أن تعمل تطبيقات Node.js بسلاسة! ??

بيان الافراج تم نشر هذه المقالة على: https://dev.to/alertyai/logging-best-practices-for-your-nodejs-app-4o9k?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3