البرمجة

تدوير ملفات السجل اليومية مع وينستون

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

أولاً، قم بتحديد تاريخ بدء التطبيق، واحتفظ به للمقارنة لاحقًا.

javascript
var startDate = new Date();

ثانياً، قم بتعديل التكوين لتشمل التحقق من تاريخ تشكيل الملف.

javascript
var winston = require('winston'); var DailyRotateFile = require('winston-daily-rotate-file'); var path = require('path'); var logger = new winston.createLogger({ transports: [ new DailyRotateFile({ name: 'cronInfo', filename: path.join(__dirname, "log", "info.log"), level: 'info', timestamp: function() { return new Date().toISOString(); }, format: winston.format.printf(info => { return `${info.timestamp} [${info.level.toUpperCase()}] ${info.message}`; }), json: false, datePattern: '.yyyy-MM-dd' }) ] });

ثالثًا، قم بتحديث وظيفة تنسيق التاريخ لتتيح إنشاء اسم ملف مخصص.

javascript
var formatDate = function(date, format) { var pad = function(num) { return ('0' + num).slice(-2); }; var tokens = { yyyy: date.getFullYear(), MM: pad(date.getMonth() + 1), dd: pad(date.getDate()) }; return format.replace(/yyyy|MM|dd/g, function(token) { return tokens[token] || token; }); }; var logger = new winston.createLogger({ transports: [ new DailyRotateFile({ name: 'cronInfo', filename: function(date) { return path.join(__dirname, "log", "info-" + formatDate(date, "yyyy-MM-dd") + ".log"); }, level: 'info', timestamp: function() { return new Date().toISOString(); }, format: winston.format.printf(info => { return `${info.timestamp} [${info.level.toUpperCase()}] ${info.message}`; }), json: false, datePattern: '.yyyy-MM-dd' }) ] });

بهذه الطريقة، سيتم إنشاء ملف “info.log” في اليوم الأول، ثم سيتم تحويل اسم الملف إلى “info-YYYY-MM-DD.log” في الأيام التالية مع إنشاء ملف جديد “info.log” لليوم الجديد. قم بتجربة هذا التكوين وتأكد من أنه يتصرف بالطريقة المطلوبة لتدوير ملفات السجل بشكل يومي مع استثناء اليوم الأول.

المزيد من المعلومات

بالطبع، إليك المزيد من المعلومات حول كيفية تحقيق هدف تدوير ملفات السجل اليومية باستخدام وينستون مع استثناء اليوم الأول:

  1. استخدام وحدة winston-daily-rotate-file: هذه الوحدة تمكّنك من تدوير ملفات السجل اليومية بناءً على تاريخها، وتقدم مرونة كبيرة في تحديد تنسيق اسم الملف وتاريخ التنسيق.

  2. تحديد مسار ملف السجل: يجب تحديد مسار ملف السجل باستخدام filename في التكوين. يتم تحديث اسم الملف بناءً على تاريخ اليوم الحالي.

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

  4. ضبط تنسيق الوقت: يمكنك تخصيص تنسيق الوقت الذي يظهر في السجل باستخدام timestamp في التكوين. في المثال، تم استخدام toISOString() لعرض التاريخ بتنسيق قياسي.

  5. ضبط مستوى السجل: يمكنك تحديد مستوى السجل الذي يتم تخزينه في الملف باستخدام level في التكوين. في هذا المثال، تم تعيينه إلى 'info' لتسجيل الرسائل ذات المستوى “معلومات”.

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

زر الذهاب إلى الأعلى