تسجيل الدخول لـ TypeScript: أفضل الحلول والأدوات
يُعد تسجيل الدخول جزءًا بالغ الأهمية في أي تطبيق يعمل بـ TypeScript. فبدون نظام تسجيل دخول عالي الجودة، لا يمكن تصحيح الأخطاء بكفاءة، أو تحليل الأخطاء في بيئة الإنتاج، أو تتبع سلوك النظام. في هذه المقالة، سنستعرض أفضل المكتبات لتسجيل الدخول في TypeScript، ونقارن إمكانياتها، ونقدم أمثلة عملية على الاستخدام.
لماذا نحتاج إلى تسجيل الدخول في TypeScript؟
بما أن TypeScript هو امتداد لـ JavaScript، فإنه يرث جميع خصائص العمل مع العمليات غير المتزامنة والنموذج الحدثي. وهذا يجعل تسجيل الدخول مهمًا بشكل خاص من أجل:
- تصحيح الأخطاء — فهم تسلسل تنفيذ العمليات غير المتزامنة
- المراقبة — تتبع حالة التطبيق في الوقت الفعلي
- تحليل الأخطاء — معلومات مفصلة عن الأعطال والاستثناءات
- التدقيق — تسجيل إجراءات المستخدمين والأحداث النظامية
- الأداء — قياس وقت تنفيذ العمليات الحرجة
أفضل 4 مكتبات لتسجيل الدخول في TypeScript
1. Winston — الخيار الشامل
Winston هي المكتبة الأكثر شيوعًا لتسجيل الدخول في Node.js مع دعم ممتاز لـ TypeScript. توفر نظامًا مرنًا من الناقلات (أين يتم إرسال السجلات) ومستويات تسجيل الدخول.
التثبيت:
npm install winstonnpm install @types/winston --save-devمثال على الإعداد الأساسي:
import winston from 'winston';
const logger = winston.createLogger({ level: 'info', format: winston.format.combine( winston.format.timestamp(), winston.format.json() ), transports: [ new winston.transports.Console(), new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }) ]});
// الاستخدام مع TypeScriptlogger.info('تم تشغيل الخادم', { port: 3000 });logger.error('خطأ في الاتصال بقاعدة البيانات', { error: err.message });2. Pino — مسجل فائق السرعة
Pino هو أسرع مسجل أداءً لـ Node.js. تم تحسينه لتقليل التأثير على أداء التطبيق وهو مثالي للأنظمة ذات الأحمال العالية.
التثبيت:
npm install pinonpm install @types/pino --save-devمثال على الاستخدام مع TypeScript:
import pino from 'pino';
const logger = pino({ level: process.env.LOG_LEVEL || 'info', transport: { target: 'pino-pretty', options: { colorize: true, translateTime: 'SYS:standard' } }});
// تسجيل دخول بنمط محددinterface UserAction { userId: string; action: string; timestamp: Date;}
logger.info({ type: 'user_action', data: { userId: '123', action: 'login' } } as UserAction);3. log4js — قوي وقابل للتكوين
log4js هو وريث إطار العمل الشهير Log4j في Java. يقدم نظامًا غنيًا للتكوين ودعمًا لتنسيقات الإخراج المختلفة.
التثبيت:
npm install log4jsnpm install @types/log4js --save-devمثال على الإعداد مع TypeScript:
import log4js from 'log4js';
log4js.configure({ appenders: { out: { type: 'stdout', layout: { type: 'colored' } }, app: { type: 'file', filename: 'application.log' } }, categories: { default: { appenders: ['out', 'app'], level: 'debug' }, 'api': { appenders: ['out'], level: 'info' } }});
const logger = log4js.getLogger('api');logger.info('تمت معالجة طلب API');logger.debug('معلمات الطلب:', { method: 'GET', url: '/users' });