我有一个在我的许多项目中使用的日志记录模块,它通常导出单个Winston记录器,所以我所做的就是定义一个记录器及其传输,然后导出它:
module.exports = logger;
当使用const logger = require('mylogger.js')
导入时,我会使用内置的各种级别(logger.info logger.debug
等)。
现在,我决定创建第二个日志函数,将日志写入不同的文件,因此我需要创建并导出一个新的传输。问题是,如果我切换到module.exports = {logger, mynewlogger}
,这将改变我导入和调用函数的方式,我在许多地方都有这样的方法。
除了创建第二个文件并导入两个文件之外,有没有其他方法可以添加第二个导出,而不必在其他地方更改我的代码?
发布于 2019-03-15 19:04:25
可以,您可以为单个导出的记录器定义多个传输。在创建Winston日志时,“transports”属性是一个允许您定义多个输出的数组。
这是我有一个有两个传输器的例子。第一个是控制台,第二个是每日旋转日志。
const winston = require('winston');
const Rotate = require('winston-daily-rotate-file');
const tsFormat = () => (new Date()).toLocaleTimeString();
const logger = new (winston.Logger)({
transports: [
// colorize the output to the console
new (winston.transports.Console)({
timestamp: tsFormat,
colorize: true,
level: 'info',
}),
new (Rotate)({
filename: `${logDir}/${logName}-app.log`,
timestamp: tsFormat,
datePattern: 'YYYY-MM-DD',
prepend: true,
level: env === 'development' ? 'verbose' : 'info',
}),
],
});
module.exports = logger;
https://stackoverflow.com/questions/55171034
复制相似问题