рдореБрдЭреЗ рд╕рдВрдкреВрд░реНрдг рд▓реЙрдЧ рд▓рд╛рдЗрди рдХреЛ рд░рдВрдЧрдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
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) : ''}`;
}),
),
}),
],
});
рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреВрд░реА рд▓рд╛рдЗрди рдореЗрдВ рд╕рдм рдХреБрдЫ рд░рдВрдЧреАрди рд╣реЛред рд╡рд┐рдВрд╕реНрдЯрди 2 рдореЗрдВ, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рд▓рд╛рдЗрди рдХреЛ рд░рдВрдЧреАрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдореИрдВ рдкреВрд░реА рдЖрдЙрдЯрдкреБрдЯ рд▓рд╛рдЗрди рдХреЛ рдХреИрд╕реЗ рд░рдВрдЧреАрди рдХрд░реВрдВ рдФрд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рд▓реЙрдЧ рд▓рд╛рдЗрди рдХреА рдкрд╣рд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реВрдВ, рди рдХрд┐ рд╕рдВрджреЗрд╢ рдмреЙрдбреА рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВред
рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ colorize
рдХреЗрд╡рд▓ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╕реНрддреБ рдХреЗ рд╕реНрддрд░ рдпрд╛ рд╕рдВрджреЗрд╢ рдЧреБрдгреЛрдВ рдХреЛ рд░рдВрдЧреАрди рдХрд░реЗрдЧрд╛: https://github.com/winstonjs/logform/blob/master/colorize.js#L92 , рднрд▓реЗ рд╣реА opts.all
рд╕реЗрдЯ рд╣реИред рдЯреАрдмреАрдПрдЪ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдкреНрдЯреНрд╕ рдмрдирд╛рддрд╛ рд╣реИред рд╕рднреА рдереЛрдбрд╝рд╛ рдмреЗрдХрд╛рд░ рд╣реИ; рдЖрдк рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ opts.level рдФрд░ opts.message рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдСрдкреНрдЯреНрд╕.рдСрд▓ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реВрдЪрдирд╛ рд╡рд╕реНрддреБ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХреЛ рд░рдВрдЧреАрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЯрд╛рдИрдорд╕реНрдЯреИрдореНрдк рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ (рджреВрд╕рд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдкреЗрдб рдирд╣реАрдВред рд╕рдВрджреЗрд╢, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд░рдВрдЧреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред рдпрджрд┐ рдЖрдк рд▓реЙрдЧрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд░рдВрдЧ рдХреЛ рд░рдВрдЧ рджреЗрддрд╛ рд╣реИ рддреЛ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдХреБрдВрдЬреА рдЬрдм рдСрдкреНрдЯреНрд╕.рдСрд▓ рд╕рдЪ рд╣реИ, рддреЛ рдореБрдЭреЗ рд╡рд╣рд╛рдВ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдВрдкреВрд░реНрдг рд▓реЙрдЧ рд▓рд╛рдЗрди рдХреЛ рд░рдВрдЧреАрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ:
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(),
]
});
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕рдВрдкреВрд░реНрдг рд▓реЙрдЧ рд▓рд╛рдЗрди рдХреЛ рд░рдВрдЧреАрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ: