Winston: ๋กœ๊ทธ ์ˆ˜์ค€์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2017๋…„ 10์›” 19์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: winstonjs/winston

Winston์˜ ๋ฌธ์„œ์— ๋”ฐ๋ผ

๋˜ํ•œ ์ „์†ก์˜ ๋กœ๊ทธ ์ˆ˜์ค€์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œˆ์Šคํ„ด 2.x

  var logger = new (winston.Logger)({
    transports: [
      new (winston.transports.Console)({ level: 'warn' }),
      new (winston.transports.File)({ filename: 'somefile.log', level: 'error' })
    ]
  });
  logger.debug("Will not be logged in either transport!");
  logger.transports.console.level = 'debug';
  logger.transports.file.level = 'verbose';
  logger.verbose("Will be logged in both transports!");

์œˆ์Šคํ„ด 3.x

const transports = {
  console: new winston.transports.Console({ level: 'warn': level: 'warn' }),
  file: new winston.transports.File({ filename: 'combined.log', level: 'error' })
};

const logger = winston.createLogger({
  transports: [
    transports.console,
    transports.file
  ]
});

logger.info('Will not be logged in either transport!');
transports.console.level = 'info';
transports.file.level = 'info';
logger.info('Will be logged in both transports!');

์ด๋ ‡๊ฒŒ ๋งŒ๋“  ๊ฒฝ์šฐ 3.0์—์„œ ๋ ˆ๋ฒจ์„ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
var logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)({ level: 'warn' }), new (winston.transports.File)({ filename: 'somefile.log', level: 'error' }) ] });


๋™์  ๋ ˆ๋ฒจ ๋ณ€๊ฒฝ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์ด์ „ ๋ฒ„์ „์ด ์ƒˆ ๋ฒ„์ „๋ณด๋‹ค ํ›จ์”ฌ ๋‚ซ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

duplicate

๋ชจ๋“  4 ๋Œ“๊ธ€

๋‚˜๋Š” ๋˜ํ•œ ์œ„์™€ ์œ ์‚ฌํ•œ winston 3.x์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” winston.create() ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ์ „์†ก์„ ๊ฐ€์ง€๊ณ  ์™ธ๋ถ€์—์„œ ๋ณ€๊ฒฝํ–ˆ๋Š”๋ฐ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค!

var transportsList =  const transports = {
  console: new winston.transports.Console({ level: 'warn': level: 'warn' }),
  file: new winston.transports.File({ filename: 'combined.log', level: 'error' })
};
var logger = new (winston.Logger)({
  transports: transportsList
});

//Then change below
transportsList.console.level = 'silly'

#1191์˜ ๋ณต์ œ๋ณธ์œผ๋กœ ๋‹ซ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋กœ๋“œ๋งต์— ์žˆ์œผ๋ฉฐ [email protected] ๊ฐ€ 2018๋…„ 5์›” 29์ผ์— ์ถœ์‹œ๋˜๊ธฐ ์ „์— ์ˆ˜์ •๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์œผ๋ฉฐ ๋กœ๊ฑฐ ๊ฐœ์ฒด์— ์ง์ ‘ ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ref๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด๋ฆ„์œผ๋กœ Keyed๋กœ ๊ฐ ์ „์†ก์— ์ด๋ฆ„์„ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
`

    var self = this;
    self.logger = self.winston.createLogger({
            levels:self.winston.config.syslog.levels
            ,transports:
                [
                    new self.winston.transports.Console({
                        level: self.config.console.level.ref
                        ,formatter: self._consoleLogFormatter
                        ,name: 'console'
                    })
                ]
        });

        self.transports = _.keyBy(self.logger.transports,"name");
        self.transports.console.level = 'info';

`

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰