【问题标题】:How to put unique file name for winston?如何为温斯顿输入唯一的文件名?
【发布时间】:2017-09-13 06:41:02
【问题描述】:

我有 10 个文件,我通过在每个文件中放置这两行来为每个文件编写日志。

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)的日志只在一个文件中。谁能帮助我。谢谢。

【问题讨论】:

    标签: node.js logging mean-stack winston


    【解决方案1】:

    只需更改要传递的对象上的 filename 属性,即可使新的 winston.transports.File 唯一。

    例如,如果您将前两行添加到 10 个单独的文件中,您可以执行以下操作,将 _${__filename} 添加到由 winston 创建的日志文件的名称中。 __filenameNode Module Wrapper 在运行时提供给每个模块。

    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') 
    

    【讨论】:

      猜你喜欢
      • 2013-05-15
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-10
      • 2012-08-27
      • 1970-01-01
      • 2018-07-01
      相关资源
      最近更新 更多