los*_*ion 1 logging node.js winston
我正在尝试将winston设置为以与此处相同的方式在我的所有模块中工作:
但我遇到了问题.
我已经设置了一个logger.js文件来配置控制台记录器:
var winston = require('winston');
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({
timestamp: true,
level: 'verbose',
colorize: true
})
]
});
module.exports = logger;
Run Code Online (Sandbox Code Playgroud)
然后我在我的主app.js文件中要求记录器:
var logger = require('./logger.js');
logger.info('Starting server'); // this console log looks great, just as I configured
Run Code Online (Sandbox Code Playgroud)
然而,当我在其他模块中尝试使用winston时,我丢失了我在logger.js中为winston设置的配置
其他模块:
var logger = require('winston');
logger.info('in another module'); // this is back to winstons default console transport
Run Code Online (Sandbox Code Playgroud)
根据我上面提到的链接,我应该能够在所有其他模块中使用winston,并且我定义/配置的传输应该仍然相同.我唯一能想到的是控制台传输不是这样.如果没有给出什么?如何配置Console传输一次,然后在所有其他模块中使用winston?
要使您当前的解决方案正常工作,您必须确保拥有一个版本的winston.您不应该在主应用程序下安装一次,而在另一个模块下安装另一次.然后在这里,您将创建一个新的记录器实例,而不是使用默认值.
你应该而不是上面这样做:
var winston = require('winston');
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {
timestamp: true,
level: 'verbose',
colorize: true
});
Run Code Online (Sandbox Code Playgroud)
我认为这应该有效.如果这不起作用,您可以尝试以下方法之一:
./logger模块.这在作为应用程序代码库一部分的内部模块中非常有用.require('other-module').logger = require('./logger');或require('other-module').setLogger(require('./logger'));.如果您想了解有关此方法的更多信息,可以查看此问题.| 归档时间: |
|
| 查看次数: |
4418 次 |
| 最近记录: |