• 0

كيفية عمل تسجيل (log) داخل ملف في Node.js

هل يمكنني إعداد "console.log" بحيث تتم عملية التسجيل (logging) داخل ملف على السيرفر بدلا من الطباعة في ال console؟ أو القيام بعملية التسجيل داخل ملف مباشرة على السيرفر ؟ وكيف يتم ذلك في كلتا الحالتين ؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكننا عمل overload للدالة console.log أي جعلها تقوم بعمل مختلف، فنحدد الملف الذي سوف تكتب به المخرجات خاصتها و نغير قناة الكتابة من الشاشة إلى ملف:

// مدير ملفات
var fs = require('fs');

// أدوات
var util = require('util');

// تعريف ملف للكتابة فيه الأخطاء
var log_file = fs.createWriteStream(__dirname + '/debug.log', {flags : 'w'});

// إسناد قناة الخرج 
var log_stdout = process.stdout;


// overload للدالة
console.log = function(d) { //
  log_file.write(util.format(d) + '\n');
  log_stdout.write(util.format(d) + '\n');
};

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك أيضاً عمل ذلك من خلال الإضافة winston حيث يمكنك تطبيق المطلوب بسهولة

أولاً تحتاج لتثبيت الإضافة  

npm install winston --save

ثم قم بإضافة الإعدادات لها كمثال 

/**
 * Configurations of logger.
 */
const winston = require('winston');
const winstonRotator = require('winston-daily-rotate-file');

const consoleConfig = [
  new winston.transports.Console({
    'colorize': true
  })
];

const createLogger = new winston.Logger({
  'transports': consoleConfig
});

const successLogger = createLogger;
successLogger.add(winstonRotator, {
  'name': 'access-file',
  'level': 'info',
  'filename': './logs/access.log',
  'json': false,
  'datePattern': 'yyyy-MM-dd-',
  'prepend': true
});

const errorLogger = createLogger;
errorLogger.add(winstonRotator, {
  'name': 'error-file',
  'level': 'error',
  'filename': './logs/error.log',
  'json': false,
  'datePattern': 'yyyy-MM-dd-',
  'prepend': true
});

module.exports = {
  'successlog': successLogger,
  'errorlog': errorLogger
};

ثم بعد ذلك يمكنك استخدام ال successLogger, و ال errorLogger ولكن بعد استدعائهما كالتالي

const errorLog = require('../util/logger').errorlog // لا تنسى الاستدعاء
const successlog = require('../util/logger').successlog // لا تنسى الاستدعاء 
//يمكنك الإستخدام كالتالي
successlog.info(`Success Message : ${variable}`);

errorlog.error(`Error Message : ${error}`);

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

هناك العديد من الطرق لعمل ذلك فيمكنك عمل ذلك بإستخدام الحزمة fs وعمل overload للوظيفة consloe.log كما وضح الأخ وائل وتعتبر هذه أسرع وأبسط طريقة

أو يمكنك إستخدام حزمة من حزم npm لكي تحصول على العديد من الميزات الأخرى

لكن عليك الأخذ بعين الإعتبار عندما تقوم بإستخدام حزم طرف ثالث 3rd party لعدة عوامل منها الأمان وخبرة مطور الحزمة وعدد التنزيلات

يمكنك إستخدام حزمة winston أما إذا أردت حزمة بسيطة وحجم أقل فيمكنك إستخدام simple-node-logger

يمكنك تثبيتها بهذا الأمر

npm install simple-node-logger --save

ومن ثم يمكنك إنشاء logger بكل بساطة ولديك العديد من الخيارات

/*
إنشاء
stdout
وملف
logger
*/ 
const log = require('simple-node-logger').createSimpleLogger('project.log');

أو

/*
إنشاء ملف
logger
فقط
*/
const log = require('simple-node-logger').createSimpleFileLogger('project.log');

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن