我有几个模块-假设是server.js,module1.js,…,moduleN.js。
我想在server.js中定义日志文件:
winston.add(winston.transports.File, { filename: 'mylogfile.log' });
然后在我所有的模块中使用它
最好的方法是什么?我可以exports.winston=winston;在每个模块中,然后在server.js中进行设置,但是还有更好的解决方案吗?
exports.winston=winston;
先感谢您!
默认的记录器概念很好地解决了这一问题。
Winston定义了一个默认记录器,任何对Winston的直接要求(及其后要求)都将检索该记录器。因此,您只需配置一次此默认记录器,即可通过其出色的调整后的多传输模式中的vanilla require(’winston’)进行后续模块使用。
例如,这是我定义3种传输方式的完整日志记录设置。我有时将Loggly换成MongoDB。
var logger=require('./log.js'); // requires winston and configures transports for winstons default logger- see code below.
var logger=require('winston'); // this retrieves default logger which was configured in log.js logger.info("the default logger with my tricked out transports is rockin this module");
var logger = require('winston'); var Loggly = require('winston-loggly').Loggly; var loggly_options={ subdomain: "mysubdomain", inputToken: "efake000-000d-000e-a000-xfakee000a00" } logger.add(Loggly, loggly_options); logger.add(winston.transports.File, { filename: "../logs/production.log" }); logger.info('Chill Winston, the logs are being captured 3 ways- console, file, and Loggly'); module.exports=logger;
另外,对于更复杂的情况,您可以使用Winston容器并从其他模块中的命名容器中检索记录器。我没有用过
我唯一的问题是部署主机上缺少日志目录,该目录很容易修复。
希望这可以帮助。