如何为Winston放置唯一的文件名



我有10个文件,我通过将这2行放入每个文件中为每个文件编写了loggs。

winston = require('winston');
winston.add(winston.transports.File, { filename: 'project.log' });

然后我得到了错误

throw new Error('Transport already attached: ' + instance.name + ", assign a different name");
^
Error: Transport already attached: file, assign a different name

我只需要一个文件中的所有控制器(node.js(的日志。任何人可以帮助我。

只需更改您传递的对象上的 filename属性,以使新的 winston.transports.File属于唯一。

例如,如果您将这两个第一行添加到10个单独的文件中,则可以执行此类操作,这些文件将将_${__filename}添加到Winston创建的日志文件的名称中。__filename由节点模块包装器在运行时提供给每个模块。

const winston = require('winston')
winston.add(winston.transports.File, {filename: `project_${__filename}.log`})

如果您想要一个文件中的所有内容,则可以创建一个代表Logger的新模块。

// logger.js
const winston = require('winston')
const logger = new winston.Logger({
  transports: [ new winston.transports.File({filename: 'project.log'}) ]
})
module.exports = logger

然后您可以在控制器内需要logger.js

// controller.js
const logger = require('./logger')
// logs "[controller.js] test-log-entry" to project.log as an info entry
logger.info(`[${__filename}] test-log-entry') 

相关内容

  • 没有找到相关文章

最新更新