ما هو Winston ولماذا هو مطلوب؟
Winston هي مكتبة تسجيل شائعة في TypeScript و JavaScript. توفر نظام تسجيل مرن مع دعم للعديد من الناقلات (الإخراج إلى وحدة التحكم، ملف، قاعدة بيانات، HTTP)، ومستويات التسجيل، وتنسيق الرسائل. في المشاريع الكبيرة، يعتبر التسجيل أمرًا بالغ الأهمية لتصحيح الأخطاء والمراقبة وتدقيق إجراءات المستخدم أو النظام. يتيح لك Winston تنظيم السجلات وتصفيتها حسب الأهمية وحفظها بشكل مناسب للتحليل.
كيفية تثبيت Winston في TypeScript
للتثبيت، قم بتنفيذ الأمر في الطرفية:
npm install winstonيوصى أيضًا بتثبيت الأنواع الخاصة بـ TypeScript:
npm install --save-dev @types/winstonالوظائف الأساسية لـ Winston
- مستويات التسجيل: error, warn, info, verbose, debug, silly (قابلة للتخصيص).
- الناقلات: Console, File, HTTP, MongoDB, Syslog وغيرها.
- التنسيق: JSON، نص عادي، طوابع زمنية، ألوان.
- عدم التزامن: لا يحجب التدفق الرئيسي.
- ملفات تعريف مخصصة: إنشاء مستويات وناقلات خاصة بك.
مثال على كود TypeScript
import winston from 'winston';
const logger = winston.createLogger({ level: 'info', format: winston.format.json(), transports: [ new winston.transports.Console({ format: winston.format.simple(), }), new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }), ],});
logger.info('تم تشغيل التطبيق');logger.error('خطأ في الاتصال بقاعدة البيانات');يقوم هذا الكود بإنشاء مسجل يكتب جميع الرسائل بمستوى info وما فوق إلى وحدة التحكم، والأخطاء إلى error.log، وجميع السجلات إلى combined.log.
متى تستخدم Winston
Winston مناسب لأي تطبيقات خادم على Node.js (Express, NestJS, Koa)، والخدمات المصغرة، والأدوات المساعدة لواجهة الأوامر، والبرامج النصية المعقدة. إنه مفيد بشكل خاص في بيئة الإنتاج حيث يكون التخزين المركزي للسجلات وتدوير الملفات والتكامل مع أنظمة المراقبة (ELK, Splunk) مطلوبًا. بالنسبة للمشاريع البسيطة، يمكن استخدام console.log المدمج، لكن Winston يوفر التحكم وقابلية التوسع.
```