تسجيل الدخول في TypeScript: أفضل المكتبات والأدوات في 2024

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تسجيل الدخول لـ TypeScript: أفضل الحلول

تسجيل الدخول هو مكون حيوي لأي تطبيق إنتاجي. بالنسبة لنظام TypeScript البيئي، هناك العديد من المكتبات، كل منها يقدم مجموعة فريدة من الإمكانيات. في هذه المقالة، سنستعرض خمسة من أفضل الحلول: Winston، Pino، Bunyan، Log4js و TSLog. ستتعرف على نقاط قوتها، ميزات التهيئة، وستحصل على أمثلة كود جاهزة.



1. Winston — المعيار الشامل

Winston هي مكتبة تسجيل الدخول الأكثر شعبية لـ Node.js مع دعم كامل لـ TypeScript. توفر نظامًا قويًا للنقل (أين يتم إرسال السجلات) والتنسيق.



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' }) ]});

logger.info('تم تشغيل التطبيق', { service: 'user-service' });logger.error('خطأ في الاتصال بقاعدة البيانات', { error: err.message });


المزايا:

  • نظام نقل مرن (ملفات، وحدة تحكم، HTTP، MongoDB، Elasticsearch)
  • دعم مدمج لتدوير السجلات عبر winston-daily-rotate-file
  • تكامل ممتاز مع TypeScript — كتابة كاملة
  • توافق مع أدوات التنميط وأنظمة APM


2. Pino — مسجل فائق السرعة

Pino موجه للأداء — فهو أسرع من Winston بـ 5-10 مرات. خيار مثالي لأنظمة التحميل العالي والخدمات المصغرة.



import pino from 'pino';

const logger = pino({ level: process.env.LOG_LEVEL || 'info', transport: { target: 'pino-pretty', options: { colorize: true } }});

logger.info({ user: { id: 123 } }, 'تم تسجيل دخول المستخدم');


الميزات الرئيسية:

  • استهلاك ضئيل لوحدة المعالجة المركزية والذاكرة
  • دعم أصلي لـ Node.js streams
  • تسلسل فعال للكائنات
  • دعم المسجلات الفرعية للتسجيل السياقي


3. Bunyan — تسجيل منظم من Joyent

Bunyan تم إنشاؤه للعمل مع بنية الخدمات المصغرة. جميع السجلات تُخرج بتنسيق JSON، مما يبسط تحليلها ومعالجتها.



import bunyan from 'bunyan';

const logger = bunyan.createLogger({ name: 'myapp', level: 'info', serializers: { req: bunyan.stdSerializers.req, err: bunyan.stdSerializers.err }});

logger.info({ req: request }, 'طلب وارد');


الميزات:

  • مسلسلات مدمجة لطلبات HTTP والأخطاء
  • دعم ringbuffer لتخزين آخر N سجل
  • أداة bunyan CLI لعرض منسق في وحدة التحكم
  • تكامل بسيط مع ELK-stack


4. Log4js — نهج مألوف من Java

Log4js هو منفذ لإطار العمل الشهير Log4j من Java. يقدم تهيئة مألوفة من خلال المستويات والمرفقات.



import log4js from 'log4js';

log4js.configure({ appenders: { out: { type: 'stdout' }, app: { type: 'file', filename: 'application.log' } }, categories: { default: { appenders: ['out', 'app'], level: 'debug' } }});

const logger = log4js.getLogger();logger.debug('تصحيح الاتصال');logger.error('خطأ حرج');


نقاط القوة:

  • نظام مرن للفئات والمرشحات
  • دعم مرفقات متعددة (ملفات، قواعد بيانات، TCP)
  • إمكانية تجاوز المستويات لوحدات مختلفة
  • دعم مدمج للتجميع


5. TSLog — حل خفيف الوزن لـ TypeScript

TSLog هي مكتبة بسيطة، مكتوبة خصيصًا لـ TypeScript. مثالية للمشاريع الصغيرة والمتوسطة.

توصيات