Winston Logger:路径必须是字符串

时间:2018-06-29 13:20:43

标签: node.js logging typeerror winston

我在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

我已经检查了所有语法。该错误肯定与传输构造函数有关。有没有办法在我的代码中不复制粘贴记录器定义的情况下可以做的事情?

1 个答案:

答案 0 :(得分:0)

更新:我发现一种可行的解决方法

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);
}

我仍然不确定为什么原来的方法行不通,但这大约是相同数量的代码。