Multiple log files with Winston?

后端 未结 5 1474
故里飘歌
故里飘歌 2020-12-14 09:36

We\'d like to use Winston for our logging in Node.js. But, we can\'t figure out how to have two log files: one for just errors, and one for everything else.

Doing th

5条回答
  •  失恋的感觉
    2020-12-14 10:09

    In the meantime, you can implement a rudimentary wrapper using the same interface like so

    var winston = require('winston');
    var configs = require('./env.js');
    
    var debug = new winston.Logger({
      levels: {
        debug: 0
      },
      transports: [
        new (winston.transports.File)({ filename: configs.PATH_TO_LOG, level: 'debug'}),
        new (winston.transports.Console)({level: 'debug'})
      ]
    });
    
    var info = new winston.Logger({
      levels: {
        info: 1
      },
      transports: [
        new (winston.transports.File)({ filename: configs.PATH_TO_LOG, level: 'info'}),
        new (winston.transports.Console)({level: 'info'})
      ]
    });
    
    var warn = new winston.Logger({
      levels: {
        warn: 2
      },
      transports: [
        new (winston.transports.File)({ filename: configs.PATH_TO_LOG, level: 'warn'}),
        new (winston.transports.Console)({level: 'warn'})
      ]
    });
    
    var error = new winston.Logger({
      levels: {
        error: 3
      },
      transports: [
        new (winston.transports.File)({ filename: configs.PATH_TO_LOG, level: 'error'}),
        new (winston.transports.Console)({level: 'error'})
      ]
    });
    
    var exports = {
      debug: function(msg){
        debug.debug(msg);
      },
      info: function(msg){
        info.info(msg);
      },
      warn: function(msg){
        warn.warn(msg);
      },
      error: function(msg){
        error.error(msg);
      },
      log: function(level,msg){
        var lvl = exports[level];
        lvl(msg);
      }
    };
    
    module.exports = exports;
    

    This will cover the basic winston API. could be extended for metadata and so on...

提交回复
热议问题