<p>рд╡рд┐рдВрд╕реНрдЯрди 3: рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╕рд╣рд┐рдд рд╕рднреА рдХреЛ рд░рдВрдЧреАрди рдХрд░реЗрдВ</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдЬреБрд▓ре░ 2018  ┬╖  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) : ''}`;
        }),
      ),
    }),
  ],
});

рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреВрд░реА рд▓рд╛рдЗрди рдореЗрдВ рд╕рдм рдХреБрдЫ рд░рдВрдЧреАрди рд╣реЛред рд╡рд┐рдВрд╕реНрдЯрди 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 рд╕реЗрдЯ рд╣реИред рдЯреАрдмреАрдПрдЪ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдкреНрдЯреНрд╕ рдмрдирд╛рддрд╛ рд╣реИред рд╕рднреА рдереЛрдбрд╝рд╛ рдмреЗрдХрд╛рд░ рд╣реИ; рдЖрдк рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ 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(),
  ]

});
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

greenhat616 picture greenhat616  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bertolo1988 picture bertolo1988  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

JaehyunLee-B2LiNK picture JaehyunLee-B2LiNK  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amiram picture amiram  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

KingRial picture KingRial  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ