أحاول تلوين إخراج وحدة التحكم وهو لا يعمل. الإخراج هو نفس اللون (الأبيض). أنا على 3.0.0-rc1.
const winston = require('winston');
const logLevels = {
levels: {
error: 0,
warn: 1,
info: 2,
http: 3,
sql: 4,
debug: 5
},
colors: {
error: "red",
warn: "darkred",
info: "black",
http: "green",
sql: "blue",
debug: "gray"
}
};
winston.addColors(logLevels);
const logger = winston.createLogger({...});
logger.add(new winston.transports.Console({colorize: true}));
لقد جربت أيضًا الاقتراح هنا ولكن هذا لا يعمل أيضًا:
logger.add(new winston.transports.Console({format: winston.format.combine(formatter, winston.format.colorize())}));
شكرا،
ألفارو
تمكنت من تشغيله جزئيًا باستخدام وثائق نموذج السجل .
const alignedWithColorsAndTime = winston.format.combine(
winston.format.colorize(),
winston.format.timestamp(),
winston.format.align(),
winston.format.printf(info => `${info.timestamp} [${info.level}]: ${info.message}`),
);
لست متأكدًا من كيفية التعامل مع إغراق وسيطات JSON.
const alignedWithColorsAndTime = winston.format.combine(
winston.format.colorize(),
winston.format.timestamp(),
winston.format.align(),
winston.format.printf((info) => {
const {
timestamp, level, message, ...args
} = info;
const ts = timestamp.slice(0, 19).replace('T', ' ');
return `${ts} [${level}]: ${message} ${Object.keys(args).length ? JSON.stringify(args, null, 2) : ''}`;
}),
);
بعد ساعتين تمكنت من تشغيل الألوان ، شكرًا Xeoncross !
بدأ Winston وحصل أيضًا على وحدة تحكم بدون ألوان ...
كنت أستخدم رمز تعريف النقل التالي:
new winston.transports.Console({
format: winston.format.simple()
})
بعد قراءة هذا الموضوع فعلت هذا:
new winston.transports.Console({
format: winston.format.combine(
winston.format.simple(),
winston.format.colorize()
)
})
ولم يكن هناك فرق.
لذلك قمت بتغيير موضع تنسيق التلوين إلى الأول وحصلت على ألوان تعمل
new winston.transports.Console({
format: winston.format.combine(
winston.format.colorize(),
winston.format.simple()
)
})
@ abrakadobr ! هذا ما فعل الحيلة.
لا شيء هنا يعمل بالنسبة لي ، ما زلت لا توجد ألوان ، وتسبب تغيير اللون إلى الأعلى في أن يسجل حقل المعلومات السلاسل المشفرة
لقد أنشأت جوهرًا يوضح كيفية استخدام تسجيل Winston & Morgan في تطبيق Expressjs بسيط.
شكرا Xeoncross! نجحت إضافة winston.format.colorize () إلى التنسيق الخاص بي. المثير للاهتمام أن هذا ليس في المستندات. أو على الأقل لم أتمكن من العثور عليه في المستندات.
أحب المرونة الجديدة ، لكنني آمل أن تحصل على توثيق أفضل. لقد قضيت وقتًا طويلاً في الحصول على هذا للعمل. مثال على المكونات واللعب لأولئك منا الذين كانوا يستخدمون winston.cli()
سيقطع شوطا طويلا ، شيء مشابه لمثال @ Xeoncross.
هل يعرف أي شخص كيفية القيام بذلك باستخدام إصدار الإصدار الحالي؟ الإصدار المرشح للإصدار ليس خيارًا.
عند قراءة الكود ، يمكنك أيضًا إرسال all
إلى colorize
كخيار لتلوين السجل بالكامل.
colorize({ all: true })
markhealey @ لقد قمت بالفعل بإزالة تبعية winston من package.json الخاص بي ثم قرأت رسالتك. شكرا لك: +1:
تضمين التغريدة ألق نظرة على: https://github.com/winstonjs/logform/blob/master/timestamp.js . يمكنك تنسيق الطابع الزمني باستخدام معلمة opt format
. لكن كن حذرًا مع المنطقة الزمنية
format.combine(
format.colorize(),
format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }),
format.align(),
format.printf(info => {
const { timestamp, level, message, ...extra } = info;
return `${timestamp} [${level}]: ${message} ${
Object.keys(extra).length ? JSON.stringify(extra, null, 2) : ''
}`;
}),
)
لا يعمل format.colorize({all:true}
حقًا إذا تم تضمين الطابع الزمني ، فإليك مثال عملي لتلوين السطر بالكامل:
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(),
]
});
تحقق من مسجل كامل المواصفات الخاص بي
شكرًا abrakadobr ، لقد نجح الحل الذي قدمته معي.
tommuhm أرى العيب الآن. لا يوجد خيار تنسيق مضمّن لـ colorize
إذا كان المرء يريد بالفعل تلوين printf
بالكامل. هل هذا يعطي معنى بالنسبة لك؟
const { createLogger, format, transports } = require('../');
const logger = createLogger({
level: 'debug',
format: format.combine(
format.timestamp(),
format.simple(),
format.printf(info => `${info.timestamp} - ${info.level}: ${info.message}`),
format.colorize({ all: true })
),
transports: [
new transports.Console(),
]
});
logger.error('wowza');
الجزء الصعب هو أن يكون colorizer
معروفًا عندما يكون info
"متسلسلًا" (أي عندما يتم تعيين info[MESSAGE]
على سلسلة). متابعة العلاقات العامة إلى logform
قريبًا - شكرًا للتنقيب في الأمر!
Xeoncross يمكننا أيضًا تحقيق نفس الشيء بطريقة أبسط بكثير
const { createLogger, format, transports } = require('winston');
const { combine, timestamp, colorize, printf } = format;
const level = process.env.LOG_LEVEL || 'debug';
const myFormat = printf(({ level, message, label, timestamp }) => {
return `${timestamp} ${level}: ${message}`;
});
const logger = createLogger({
format: combine(colorize(), timestamp(), myFormat),
transports: [new transports.Console()]
});
المرجع: https://www.npmjs.com/package/winston#using -custom-logging-levels
أنا أستخدم winston لتسجيل الدخول إلى cloudwatch ومحاولة إضافة لون ولكن بدلاً من ظهور رموز الألوان .. أحاول جميع الحلول المذكورة أعلاه. أدناه هو رمز بلدي
const winston = require('winston');
const {transports, format, createLogger } = winston;
const { combine,errors,timestamp} = format;
const colorizer = winston.format.colorize();
const logger = createLogger({
level: process.env.LOG_LEVEL,
prettyPrint : true,
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()
]
});
module.exports = {logger};
وفي إخراج وحدة التحكم cloudwatch هو
[34m2019-08-22T13:00:03.325Z - debug: res by id: [
{
"isActive": true,
"value": "fNUMheWiwXayKsaYCbUeA7Gg7BtEPIUbakB56XH1",
"id": "oehlwqlcve",
"userId": "6b347b41-ddef-4842-83a0-1cd5ca358482"
}
][39m
هذا [39m apear بدلاً من اللون. أي اقتراح؟
-22T13: 00: 03.325Z - تصحيح الأخطاء: الدقة بواسطة المعرف: [
أواجه نفس المشكلة أيضًا. هل تمكنت من إصلاحه؟
-22T13: 00: 03.325Z - تصحيح الأخطاء: الدقة بواسطة المعرف: [
أواجه نفس المشكلة أيضًا. هل تمكنت من إصلاحه؟
أي تحديثات على ذلك؟ هل قمت بحلها بطريقة ما؟
Xeoncross يمكننا أيضًا تحقيق نفس الشيء بطريقة أبسط بكثير
const { createLogger, format, transports } = require('winston'); const { combine, timestamp, colorize, printf } = format; const level = process.env.LOG_LEVEL || 'debug'; const myFormat = printf(({ level, message, label, timestamp }) => { return `${timestamp} ${level}: ${message}`; }); const logger = createLogger({ format: combine(colorize(), timestamp(), myFormat), transports: [new transports.Console()] });
المرجع: https://www.npmjs.com/package/winston#using -custom-logging-levels
لقد فعلت ذلك الحيلة بالنسبة لي في iTerm على MacOS
الرابط أدناه يعمل بالنسبة لي:
https://stackoverflow.com/questions/51012150/winston-3-0-colorize-whole-output-on-console
التعليق الأكثر فائدة
تمكنت من تشغيله جزئيًا باستخدام وثائق نموذج السجل .
لست متأكدًا من كيفية التعامل مع إغراق وسيطات JSON.
التحديث هنا هو ما توصلت إليه: