اذهب إلى المحتوى
  • 0

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

محمد هاني3

السؤال

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

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

Recommended Posts

  • 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');

 

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

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...