Winston Logger:路径必须是字符串
Winston Logger: Path must be a string
我在我的 Node.js 项目中使用 Winston 进行日志记录。我想构建多个具有相似设置的记录器,所以为了保持干爽,我正在尝试使用以下函数构建传输:
function makeTransport(dir, logLevel) {
return new winston.transports.DailyRotateFile({
filename: `${LOG_DIR}/${dir}/${logLevel}-%DATE%.log`,
datePattern: 'YYYY-MM-DD-HH',
level: logLevel,
format: myFormat
});
}
但是当我运行这个时,它抛出一个错误
TypeError: Path must be a string. Received undefined
我检查了所有语法。错误肯定是传输构造函数造成的。有没有一种方法可以做我想做的事情,而无需在我的代码中复制粘贴记录器定义?
更新:我找到了一个可行的解决方法
function makeTransport(dir, logLevel) {
let def = {
filename: `${LOG_DIR}/${dir}/${logLevel}-%DATE%.log`,
datePattern: 'YYYY-MM-DD-HH',
level: logLevel,
format: myFormat
};
return new winston.transports.DailyRotateFile(def);
}
我仍然不确定为什么原来的方法不起作用,但这差不多是相同数量的代码。
我在我的 Node.js 项目中使用 Winston 进行日志记录。我想构建多个具有相似设置的记录器,所以为了保持干爽,我正在尝试使用以下函数构建传输:
function makeTransport(dir, logLevel) {
return new winston.transports.DailyRotateFile({
filename: `${LOG_DIR}/${dir}/${logLevel}-%DATE%.log`,
datePattern: 'YYYY-MM-DD-HH',
level: logLevel,
format: myFormat
});
}
但是当我运行这个时,它抛出一个错误
TypeError: Path must be a string. Received undefined
我检查了所有语法。错误肯定是传输构造函数造成的。有没有一种方法可以做我想做的事情,而无需在我的代码中复制粘贴记录器定义?
更新:我找到了一个可行的解决方法
function makeTransport(dir, logLevel) {
let def = {
filename: `${LOG_DIR}/${dir}/${logLevel}-%DATE%.log`,
datePattern: 'YYYY-MM-DD-HH',
level: logLevel,
format: myFormat
};
return new winston.transports.DailyRotateFile(def);
}
我仍然不确定为什么原来的方法不起作用,但这差不多是相同数量的代码。