<p>وينستون 3: تلوين الكل بما في ذلك الطابع الزمني</p>

تم إنشاؤها على ٢ يوليو ٢٠١٨  ·  2تعليقات  ·  مصدر: winstonjs/winston

لا يمكنني العثور على مثال لتلوين سطر السجل بالكامل ، على سبيل المثال ،

winston.createLogger({
  level: 'debug',
  transports: [
    new winston.transports.Console({
      format: winston.format.combine(
        winston.format.timestamp(),
        winston.format.colorize({ all: true }),
        winston.format.align(),
        winston.format.printf((info) => {
          const {
            timestamp, level, message, ...args
          } = info;

          // const ts = timestamp.slice(0, 19).replace('T', ' ');
          return `${timestamp} ${level}: ${message} ${Object.keys(args).length ? JSON.stringify(args, null, 2) : ''}`;
        }),
      ),
    }),
  ],
});

أود تلوين كل شيء في السطر بأكمله. في Winston 2 ، بدا أنه يعمل بشكل جيد وتوقع أنه لا يلون الخط بأكمله.

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

التعليق الأكثر فائدة

الحل السريع لتلوين سطر السجل بالكامل هو:

const colorizer = winston.format.colorize();

const logger = winston.createLogger({
  level: 'debug',
  format: combine(
    winston.format.timestamp(),
    winston.format.simple(),
    winston.format.printf(msg => 
      colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
    )
  ),
  transports: [
    new transports.Console(),
  ]

});

ال 2 كومينتر

المشكلة هي colorize ستقوم فقط بتلوين مستوى كائن المعلومات أو خصائص الرسالة: https://github.com/winstonjs/logform/blob/master/colorize.js#L92 ، حتى لو opts.all تم تعيينه. Tbh أعتقد أن هذا يجعل كل الخيارات عديمة الفائدة إلى حد ما ؛ يمكنك فقط تعيين مستوى opts.level و opts.message للحصول على الوظيفة الحالية. يمكن أن يقوم opts.all بدلاً من ذلك ، على سبيل المثال ، بتلوين كل مفتاح في كائن المعلومات ، والذي سيتضمن tiemstamp (النقطة الأخرى هي أن الطابع الزمني يضاف كمفتاح منفصل في المعلومات ، وليس مقدمًا إلى info.message ، بحيث لا يتم تلوينه). إذا كنت ترغب في فتح نموذج PR إلى logform الذي يجعل تلوين جميع مفاتيح المعلومات عندما يكون الخيار opts. كل شيء صحيحًا ، فسأكون سعيدًا بالنظر فيه هناك. شكرا!

الحل السريع لتلوين سطر السجل بالكامل هو:

const colorizer = winston.format.colorize();

const logger = winston.createLogger({
  level: 'debug',
  format: combine(
    winston.format.timestamp(),
    winston.format.simple(),
    winston.format.printf(msg => 
      colorizer.colorize(msg.level, `${msg.timestamp} - ${msg.level}: ${msg.message}`)
    )
  ),
  transports: [
    new transports.Console(),
  ]

});
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات