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

السؤال

نشر

لدي مشروع مبني باستخدام الجافاسكريبت express و node.js، وهو جاهز للنشر ولكن بداخله العديد من تعليمات الطباعة على console ضمن العمليات التي تجري فيه مثل:

console.log()

console.error()

والمشروع سيبقى قيد العمل دون توقّف، حيث سيتم طباعة رسائل الخطأ عند حدوثها لإمكانية الوصول إليها ومعالجتها.

هل هنالك طريقة لإضافة التاريخ والوقت لهذه الأخطاء أو المعلومات التي سيتم طباعتها في console؟ لأستطيع الوصول إلى هذه المعلومات بشكل أسرع.

Recommended Posts

  • 1
نشر

لفعل ذلك تحتاج تثبيت بعض الوحدات مثل console-stamp و log-timestamp, يمكنك تثبيت الوحدة console-stamp من خلال الأمر التالي

npm install console-stamp --save

ثم تحتاج لإضافة السطر التالي في أعلى الملف app.js

require('console-stamp')(console, '[HH:MM:ss.l]');

سوف يظهر تنسيق الوقت بتنسيق UTC ولكن تستطيع تغييره كالتالي

express.logger.format('mydate', function() {
    var df = require('console-stamp/node_modules/dateformat');
    return df(new Date(), 'HH:MM:ss.l');
});
app.use(express.logger('[:mydate] :method :url :status :res[content-length] - :remote-addr - :response-time ms'));

بعد ذلك سوف يظهر الوقت بجانب كل عملية طباعة, بالنسبة للوحدة log-timestamp تستطيع تثبيتها من خلال الامر التالي

npm install log-timestamp

ويمكنك استخدامها بشكل مباشر 
 

  • 1
نشر

يمكنك استخدام ال  log-timestamp ببساطة من خلال إضافتها فقط 

أولاً تقوم بتثبيتها من خلال npm

npm install log-timestamp

ثانياً تقوم بإستدعائها والطباعة لرؤية الفرق

console.log('Before');

require('log-timestamp'); //هذا السطر هو المطلوب فقط

console.log('After');

كما يمكنك استخدام الحل التالي إذا كنت لا تحتاج لإستخدام أو إضافات خارجية 

var origlog = console.log;

console.log = function( obj, ...placeholders ){
    if ( typeof obj === 'string' )
        placeholders.unshift( Date.now() + " " + obj );
    else
    {
        // This handles console.log( object )
        placeholders.unshift( obj );
        placeholders.unshift( Date.now() + " %j" );
    }

    origlog.apply( this, placeholders );
};

 

  • 0
نشر

إذا كنت ترغب في ذلك ، يمكنك إنشاء مسجل مخصص لتطبيقك عن طريق توسيع بنية Node's في فئة "Console":

"use strict";
const moment = require('moment');
const util = require('util');
const Console = require('console').Console;

class Logger extends Console {
    constructor(stdout, stderr, ...otherArgs) {
        super(stdout, stderr, ...otherArgs);
    }
    log(...args) {
        super.log(moment().format('D MMM HH:mm:ss'), '-', util.format(...args));
    }
    error(...args) {
        super.error(moment().format('D MMM HH:mm:ss'), '-', util.format(...args));
    }
}
module.exports = (function() {
    return new Logger(process.stdout, process.stderr); 
}());
// بعد ذلك ، يمكنك استخدامه على النحو التالي
const logger = require('./logger');
logger.log('hello world', 123456);
logger.error('some error occurred', err);

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...