node.js - Winston Logger:路径必须是字符串
问题描述
我在我的 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);
}
我仍然不确定为什么原始方式不起作用,但这大约是相同数量的代码。
推荐阅读
- java - 带有 Spring-boot 存根的 Spock 无法正常工作
- solr - SOLR 7.5 查询与未修剪的空白
- angular - 在所有子组件和子子组件中的数据到达Angular之前,显示加载栏的最佳方法是什么
- python - 抽象基类中的断言?
- c# - 如何使用 Avalonia 在 Win32 中最小化程序到系统托盘
- c# - 中间件的净核顺序
- amazon-web-services - 使用 AWS 将子域从 http 重定向到 https
- python - 如何改进血管分割,使得去除小轮廓时不去除部分血管?
- html - 无法居中或移动社交媒体按钮 DIV SVG
- vba - Dlookup 一个字段确定另一个字段