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

تسجيل متقدم لواجهة برمجة تطبيقات Node.js مع Winston وMorgan

تم النشر بتاريخ 2024-07-31
تصفح:573

Advanced Node.js API Logging with Winston and Morgan

يعد التسجيل جزءًا مهمًا من أي تطبيق، حيث يوفر نظرة ثاقبة لسلوك التطبيق، ويساعد في تصحيح المشكلات، ومراقبة الأداء. في واجهة Node.js API، يمكن تحقيق التسجيل المتقدم باستخدام مكتبات مثل Winston وMorgan. سترشدك هذه المقالة خلال عملية إعداد Winston وMorgan واستخدامهما للتسجيل المتقدم في Node.js API.

لماذا يعد التسجيل المتقدم مطلوبًا
يعد التسجيل المتقدم ضروريًا لعدة أسباب:

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

  • المراقبة والصيانة : المراقبة المستمرة للسجلات تسمح للمطورين بتتبع صحة التطبيق وأدائه. من خلال تحليل السجلات، يمكنك اكتشاف الحالات الشاذة واختناقات الأداء والمشكلات المحتملة قبل أن تصبح خطيرة.

  • التدقيق والامتثال : بالنسبة للعديد من التطبيقات، وخاصة تلك التي تتعامل مع البيانات الحساسة، يعد الاحتفاظ بالسجلات التفصيلية أحد متطلبات الامتثال. توفر السجلات سجلاً لإجراءات المستخدم وتغييرات النظام، والتي يمكن أن تكون بالغة الأهمية لعمليات التدقيق والامتثال التنظيمي.

  • الأمان : يعد تسجيل الأحداث المتعلقة بالأمان، مثل محاولات تسجيل الدخول الفاشلة، والوصول غير المصرح به، والأنشطة المشبوهة، أمرًا بالغ الأهمية لاكتشاف التهديدات الأمنية والاستجابة لها. يساعد التسجيل المتقدم في الحفاظ على بيئة تطبيق آمنة.

جدول المحتويات

  1. مقدمة عن ونستون ومورجان
  2. إعداد مشروع Node.js
  3. تثبيت وينستون ومورغان
  4. تكوين Winston للتسجيل المتقدم
  5. دمج Morgan لتسجيل طلبات HTTP
  6. الجمع بين ونستون ومورغان
  7. تخصيص تنسيقات التسجيل
  8. التسجيل في وسائل النقل المختلفة
  9. معالجة الأخطاء وتسجيلها
  10. خاتمة

1.مقدمة عن وينستون ومورجان
Winston هي مكتبة تسجيل متعددة الاستخدامات وسهلة الاستخدام لـ Node.js. وهو يدعم عمليات نقل متعددة لرسائل السجل، مما يعني أنه يمكنك تسجيل الدخول إلى مواقع مختلفة (وحدة التحكم، الملفات، الخوادم البعيدة، إلخ) بتنسيقات ومستويات مختلفة.

Morgan عبارة عن برنامج وسيط لتسجيل طلبات HTTP لـ Node.js. إنه يبسط تسجيل طلبات HTTP بتنسيق محدد مسبقًا، والذي يمكن أن يكون مفيدًا جدًا لتتبع الطلبات والاستجابات الواردة في واجهة برمجة التطبيقات.

2.إعداد مشروع Node.js
أولاً، قم بإنشاء مشروع Node.js جديد إذا لم يكن لديك مشروع بالفعل:

mkdir node-api-logging
cd node-api-logging
npm init -y

3. تثبيت وينستون ومورغان
قم بتثبيت Winston وMorgan مع Express (لإعداد واجهة برمجة التطبيقات الأساسية):

npm install express winston morgan

4. تكوين Winston للتسجيل المتقدم
قم بإنشاء ملف logger.js لتكوين Winston:

// logger.js
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, printf, errors } = format;

const customFormat = printf(({ level, message, timestamp, stack }) => {
  return `${timestamp} ${level}: ${stack || message}`;
});

const logger = createLogger({
  level: 'info',
  format: combine(
    timestamp(),
    errors({ stack: true }),
    customFormat
  ),
  transports: [
    new transports.Console(),
    new transports.File({ filename: 'logs/error.log', level: 'error' }),
    new transports.File({ filename: 'logs/combined.log' })
  ]
});

module.exports = logger;

5. دمج مورغان لتسجيل طلبات HTTP
قم بإنشاء ملف middleware/logger.js لدمج Morgan مع Winston:

// middleware/logger.js
const morgan = require('morgan');
const logger = require('../logger');

const stream = {
  write: (message) => logger.info(message.trim())
};

const morganMiddleware = morgan('combined', { stream });

module.exports = morganMiddleware;

6.الجمع بين وينستون ومورجان
قم بدمج كل من Winston وMorgan في تطبيق Express الخاص بك:

// app.js
const express = require('express');
const logger = require('./logger');
const morganMiddleware = require('./middleware/logger');

const app = express();

// Use Morgan middleware for HTTP request logging
app.use(morganMiddleware);

// Example route
app.get('/', (req, res) => {
  logger.info('Hello world endpoint was called');
  res.send('Hello, world!');
});

// Error handling middleware
app.use((err, req, res, next) => {
  logger.error(err.message, { stack: err.stack });
  res.status(500).send('Something went wrong!');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  logger.info(`Server is running on port ${PORT}`);
});

7.تخصيص تنسيقات التسجيل
يمكنك تخصيص تنسيقات التسجيل في Winston وMorgan. على سبيل المثال، قد ترغب في تسجيل تفاصيل طلب إضافية مثل الرؤوس أو معلمات الاستعلام أو أوقات الاستجابة.

8. التسجيل في وسائل النقل المختلفة
يدعم ونستون وسائل النقل المختلفة. يمكنك تسجيل الدخول إلى وجهات مختلفة بناءً على خطورة الرسائل. على سبيل المثال، قد ترغب في إرسال سجلات الأخطاء إلى خادم تسجيل عن بعد أو خدمة خارجية مثل Loggly أو Papertrail.

9.معالجة الأخطاء وتسجيلها
تعد معالجة الأخطاء وتسجيلها بشكل صحيح أمرًا ضروريًا لتحديد المشكلات وحلها. تأكد من أن خطأك في التعامل مع البرامج الوسيطة يسجل معلومات الخطأ التفصيلية باستخدام Winston.

10.الخلاصة
من خلال الجمع بين Winston وMorgan، يمكنك تحقيق تسجيل متقدم في Node.js API الخاص بك. يوفر Winston إطارًا قويًا لتسجيل الأحداث على مستوى التطبيق، بينما يقوم Morgan بتبسيط تسجيل طلبات HTTP. معًا، يقدمون لك حل تسجيل شامل يعزز قدرتك على مراقبة التطبيق الخاص بك وتصحيح الأخطاء فيه.

نظرة عامة على الكود النهائي
فيما يلي ملخص سريع للملفات ومحتوياتها:

  • logger.js: يقوم بتكوين Winston بالتنسيق ووسائل النقل المخصصة.
  • middleware/logger.js: يدمج Morgan مع Winston.
  • app.js: يقوم بإعداد تطبيق Express، الذي يدمج كلاً من Winston وMorgan. باستخدام هذا الإعداد، يمكنك تسجيل ومراقبة واجهة Node.js API الخاصة بك بشكل فعال، مما يسهل الصيانة والتصحيح.
بيان الافراج تم نشر هذه المقالة على: https://dev.to/dev_habib_nuhu/advanced-nodejs-api-logging-with-winston-and-morgan-4fb1?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] للحذف هو - هي
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3