يمكن أن يكون التسجيل أداة لا تقدر بثمن لاستكشاف المشكلات وإصلاحها وتحليل استخدام التطبيق. تساعد هذه الحزم في جعلها عملية مباشرة.

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

يحتوي Node.js على العديد من حزم التسجيل لمساعدتك في إنشاء وإدارة السجلات المهيكلة. هنا سوف تستكشف أفضل حزم التسجيل المتوفرة حاليًا في النظام البيئي Node.js وكيفية استخدامها.

1. وينستون

Winston هي مكتبة Node.js توفر وظائف تسجيل مرنة ، بما في ذلك وسائل النقل المتعددة. "النقل" هو وسيط تخزين لسجلاتك.

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

يمكنك تثبيت Winston كعنصر تبعية في دليل المشروع الخاص بك باستخدام npm ، مدير حزم JavaScript. قم بتشغيل هذا الأمر:

npm تثبيت وينستون

يوضح مقطع التعليمات البرمجية أدناه كيفية إعداد نظام تسجيل أساسي باستخدام Winston. يمكنك تحديد سجلات لمواقع مختلفة ومستويات متفاوتة من الخطورة.

instagram viewer

مقدار ثابت ونستون = يتطلب("وينستون");

// وينستون المسجل
مقدار ثابت المسجل = winston.createLogger ({
مستوى: 'معلومات',
التنسيق: winston.format.json () ،
الافتراضي ميتا: { خدمة: "خدمتي" },
النقل: [
جديد وينستون. وحدة التحكم()،
جديد وينستون. ملف({ اسم الملف: "error.log", مستوى: 'خطأ' }),
جديد وينستون. ملف({ اسم الملف: "مجتمعة. سجل" })
]
});

logger.info ("مرحبا وينستون!");
logger.warn ("تحذير: قد يكون هناك خطأ ما.");
خطأ المسجل ('حدث خطأ.');

يقوم هذا الرمز بتكوين المسجل بثلاث وسائل نقل. الأول هو نقل وحدة التحكم ، والذي سينتج رسائل السجل إلى وحدة التحكم. والثاني هو نقل الملف الذي سيكتب السجلات بمستوى "خطأ" إلى ملف "error.log". والثالث هو نقل الملف الذي سيكتب جميع السجلات إلى ملف "Combined.log".

يتم تعيين أداة التسجيل للتسجيل على مستوى "المعلومات" افتراضيًا وتتضمن كائن بيانات وصفية افتراضيًا مع تعيين حقل "الخدمة" على "خدمتي".

ثم يقوم الكود بتسجيل ثلاث رسائل باستخدام المسجل في مستويات "المعلومات" و "التحذير" و "الخطأ" ، على التوالي. سيتم إخراج هذه الرسائل إلى وحدة التحكم وملفات السجل المناسبة وفقًا لتكوين وسائل النقل.

2. مورغان

Morgan هو برنامج وسيط لتسجيل الدخول لـ Node.js يوفر إمكانات أساسية لتسجيل الطلبات. تم تصميمه ليكون خفيف الوزن وسهل الاستخدام. يعمل Morgan عن طريق اعتراض طلبات HTTP وتسجيل المعلومات ذات الصلة ، مثل طريقة الطلب وعنوان URL ورمز الحالة وما إلى ذلك.

تتمثل إحدى الفوائد الرئيسية لمورغان في بساطته. يمكنك إضافته إلى تطبيق Node.js ببضعة أسطر من التعليمات البرمجية ، لأنه لا يتطلب أي تكوين إضافي للإعداد.

يدعم Morgan تنسيقات تسجيل متعددة ، بما في ذلك تنسيق شائع, مجموع, قصير, صغير الحجم، و ديف ، مما يسمح لك باختيار أفضل ما يناسب احتياجاتك.

يمكنك تثبيت Morgan كعنصر تبعية في دليل المشروع الخاص بك عن طريق تشغيل هذا الأمر:

npm تثبيت مورغان

يوضح هذا الرمز كيفية استخدام Morgan في تطبيق اكسبرس:

مقدار ثابت صريح = يتطلب("يعبر");
مقدار ثابت مورغان = يتطلب("مورغان");
مقدار ثابت التطبيق = صريح () ؛

app.use (مورغان ("ديف"));

app.get ("/"، (مطلوب ، الدقة) => {
res.send ("مرحبا بالعالم!");
});

app.listen (3000, () => وحدة التحكم.سجل("بدء التطبيق"));

يقوم الكود بتهيئة Morgan باستخدام ديف شكل. عند تقديم طلب GET لمسار الجذر (/) ، يقوم Morgan بتسجيل تفاصيل هذا الطلب إلى وحدة التحكم.

على الرغم من بساطتها ، تعد Morgan حزمة تسجيل قوية توفر إمكانات تسجيل الطلبات الأساسية لتطبيقات Node.js.

3. بينو

Pino عبارة عن حزمة تسجيل شائعة وخفيفة الوزن لتطبيقات Node.js تتميز بأداء سريع وتكلفة منخفضة ، كما هو مذكور في معاييرهم.

يدعم Pino أنواعًا متعددة من النقل ، ويمكن توسيعه بسهولة باستخدام وسائل النقل المخصصة. تتمثل إحدى ميزات Pino الرئيسية في قدرته على تسجيل الرسائل بتنسيق JSON ، مما يسهل تحليلها وتحليلها.

يختلف استخدام Pino اعتمادًا على إطار عمل Node.js ؛ يمكنك تثبيت Pino كعنصر تبعية في دليل مشروع Express الخاص بك عن طريق تشغيل الأمر أدناه:

npm تثبيت pino-http

لأطر مختلفة ، تحقق من وثائق بينو.

يوضح مقطع التعليمات البرمجية هذا استخدام Pino في تطبيق Express:

مقدار ثابت صريح = يتطلب("يعبر");
مقدار ثابت التطبيق = صريح () ؛
مقدار ثابت بينو = يتطلب("بينو- http")()

app.use (بينو)

app.get ("/"، (مطلوب ، الدقة) => {
بينو (مطلوب ، الدقة) // طلب السجلات والاستجابة لها
req.log.info ("طريق الجذر") // يسجل معلومات إضافية
res.send ("مرحبا بالعالم!");
});

app.listen (3000, () => وحدة التحكم.سجل("بدء التطبيق"));

هذا الرمز يهيئ Pino ويسجله على أنه برمجية وسيطة. عند تقديم طلب GET لمسار الجذر (/) ، يقوم Pino بتسجيل تفاصيل طلبك واستجابته لوحدة التحكم.

4. تصحيح

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

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

يمكنك تثبيت Debug كعنصر تبعية في دليل المشروع الخاص بك باستخدام هذا الأمر:

npm تثبيت التصحيح

يوضح هذا الرمز استخدام Debug في تطبيق Express:

مقدار ثابت صريح = يتطلب('يعبر');

// استيراد التصحيح وإنشاء مساحة الاسم
مقدار ثابت التصحيح = يتطلب("تصحيح")("myapp: الخادم");

مقدار ثابت التطبيق = صريح () ؛
مقدار ثابت المنفذ = process.env. بورت || 3000;

app.get ('/'، (مطلوب ، الدقة) => {
تصحيح ("تم استلام طلب لـ /");
res.send ('مرحبا بالعالم!');
});

app.listen (المنفذ ، () => {
تصحيح (`الخادم يستمع على المنفذ $ {منفذ}`);
});

ينشئ الكود مساحة اسم ، myapp: الخادم. ستميز مساحة الاسم هذه السجلات المتعلقة بـ "الخادم"من تلك المرتبطة بالوحدات النمطية الأخرى بمساحة اسم مختلفة في تطبيقك.

قم بتشغيل هذا الأمر لبدء التصحيح:

DEBUG = myapp: * node server.js

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

ميزة أخرى لـ Debug هي توافقه مع حزم التسجيل الأخرى ، مثل Winston.

اختيار حزمة التسجيل

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

في النهاية ، سيعتمد اختيار حزمة التسجيل على الاحتياجات والمتطلبات المحددة لمشروعك.