محمد هاني3 نشر 21 مايو 2021 أرسل تقرير نشر 21 مايو 2021 هل يمكنني إعداد "console.log" بحيث تتم عملية التسجيل (logging) داخل ملف على السيرفر بدلا من الطباعة في ال console؟ أو القيام بعملية التسجيل داخل ملف مباشرة على السيرفر ؟ وكيف يتم ذلك في كلتا الحالتين ؟ 1 اقتباس
0 Wael Aljamal نشر 21 مايو 2021 أرسل تقرير نشر 21 مايو 2021 يمكننا عمل 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 عبدالباسط ابراهيم نشر 22 مايو 2021 أرسل تقرير نشر 22 مايو 2021 يمكنك أيضاً عمل ذلك من خلال الإضافة 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 عبدالله عبدالرحمن11 نشر 22 مايو 2021 أرسل تقرير نشر 22 مايو 2021 هناك العديد من الطرق لعمل ذلك فيمكنك عمل ذلك بإستخدام الحزمة 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'); اقتباس
السؤال
محمد هاني3
هل يمكنني إعداد "console.log" بحيث تتم عملية التسجيل (logging) داخل ملف على السيرفر بدلا من الطباعة في ال console؟ أو القيام بعملية التسجيل داخل ملف مباشرة على السيرفر ؟ وكيف يتم ذلك في كلتا الحالتين ؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.