Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΡΠΊΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΆΡΡΠ½Π°Π»Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
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 ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΡΠ°ΡΠΊΡΠ°ΡΠΈΠ²Π°Π» Π²ΡΡ ΡΡΡΠΎΠΊΡ.
ΠΠ°ΠΊ ΡΠ°ΡΠΊΡΠ°ΡΠΈΡΡ Π²ΡΡ ΡΡΡΠΎΠΊΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠ΅ΡΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΠΏΠ΅ΡΠ²ΡΡ Π·Π°ΠΏΠΈΡΡ ΡΡΡΠΎΠΊΠΈ ΠΆΡΡΠ½Π°Π»Π°, Π° Π½Π΅ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠ΅Π»Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ colorize
Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΊΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ: https://github.com/winstonjs/logform/blob/master/colorize.js#L92 , Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ opts.all
ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ opts.all Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ ΠΊΠ°ΠΊ Π΅ΡΡΡ; Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ opts.level ΠΈ opts.message, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ opts.all ΠΌΠΎΠ³ Π±Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΠΊΡΠ°ΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»ΡΡ Π² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΌΠ΅ΡΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠ΅ΡΠΊΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Π² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π° Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊ info.message, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° Π½Π΅ ΠΎΠΊΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ). ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΡΠΊΡΡΡΡ PR Π² Π»ΠΎΠ³-ΡΠΎΡΠΌΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΠΊΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° opts.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(),
]
});
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π±ΡΡΡΡΡΠΉ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ Π΄Π»Ρ ΡΠ°ΡΠΊΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΆΡΡΠ½Π°Π»Π°: