如何在Nodejs中的多个文件中使用库

时间:2017-11-06 10:48:56

标签: javascript node.js express winston

我想使用Winston登录我的nodejs express项目。在我的主文件(server.js)中,我有以下代码:

const winston = require('winston');
winston.level = process.env.LOG_LEVEL
winston.log('info', 'Hello log files!')

我也想在其他文件中使用这个库,所以我必须将这两行添加到我想要使用它的每个文件中,还是有更好的方法。

3 个答案:

答案 0 :(得分:1)

你可以创建customWinston.js文件:

let winston = require('winston');
winston.level = process.env.LOG_LEVEL
winston.log('info', 'Hello log files!')

exports.customWinston = winston;

然后需要你的自定义Winston:

let customWinston = require('./customWinston').customWinston;

答案 1 :(得分:1)

您可以像这样导出和调用它。

const winston = require('winston');
winston.level = process.env.LOG_LEVEL
module.exports = winston;

在其他档案中

const winston = require('/path/to/winston');
winston.log('blah blah');

或者,只需将其设为全局并调用即可。 (不推荐)

const winston = require('winston');
winston.level = process.env.LOG_LEVEL
global.WINSTON = winston;

...

// other file
WINSTON.log('blah')

答案 2 :(得分:0)

执行此操作的首选方法是将自定义记录器添加到winston对象:

var winston = require('winston');

// add a new logger to the winston object
winston.loggers.add('logger1', {
  console: {
    level: 'silly',
    colorize: true,
    label: 'Console One'
  },
  file: {
    filename: '/path/to/your/logfile.log'
    level: process.env.LOG_LEVEL
  }
}

按照上面代码段中的说明设置记录器后,您只需在应用程序的任何其他文件中“获取”记录器:

var winston = require('winston');

// get your preconfigured logger
var myLogger = winston.loggers.get('logger1');

// start logging!
myLogger.error('FooError');
myLogger.log('warn', 'Exiting application');

这也是winston文档中描述的方式:Winston Docs