在winston

时间:2017-11-02 10:39:24

标签: javascript node.js logging winston

如何动态更改winston中的日志级别,反映多个文件中的级别更改?

我有两个js文件,我在两个文件中包含了记录器。如果我在index.js中更改记录器的级别,则更改不会反映在readfile.js中

这是我的代码:

winston_logger.js

var winston = require('winston');
var logger;
module.exports.init = function (logLevel) {
      logger = new(winston.Logger)({
        transports: [
            new(winston.transports.Console)({
                level: logLevel
            })
        ],
        exitOnError: false
    });
}

module.exports.getLogger = function (config) {
    if (!module.exports.logger) {
        exports.init('info')
    }
    return logger;
}

module.exports.debugLevel = function(){
  logger.transports.console.level = 'debug'
}

Index.js

var  readFile = require('./readFile')
var winston = require('./winston_logger')
var log = winston.getLogger()
log.info("info message" );

/*Here Im changing the log level as debug*/
winston.debugLevel ();

setTimeout(function(){
    readFile(function(){})
}, 5000)

readfile.js

var  readFile = require('./readFile')
var winston = require('./winston_logger')
var log = winston.getLogger()
log.info("info message" );

/*Here Im changing the log level as debug*/
winston.debugLevel ();

setTimeout(function(){
    readFile(function(){})
}, 5000)

请勿将此问题标记为重复问题。 These答案对我没有帮助。

2 个答案:

答案 0 :(得分:0)

在readfile.js中导入winston_logger的方式与在index.js中导入它的方式相同

答案 1 :(得分:0)

winston_logger.js

   var winston = require('winston');
    winston.configure({
        transports: [
          new (winston.transports.Console)({ timestamp: true, json : false , colorize: true}),
          new (winston.transports.File)({filename: './somefile.log' , json : true, timestamp: true })
        ]
     });

module.exports = winston;

我可以从任何地方更改日志级别。 感谢