2017-04-17 31 views
3

我有10個文件,其中我爲每個文件寫了2個行,如何把winston的獨特文件名?

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的)的只有一個人file.Can日誌幫助me.Thanks。

回答

2

只是將您傳遞給新winston.transports.File的對象的filename屬性更改爲唯一。例如,如果您將這兩行的第一行添加到10個單獨的文件中,則可以執行類似這樣的操作,這會將_${__filename}添加到由winston創建的日誌文件的名稱中。 __filenameNode Module Wrapper在運行時爲每個單個模塊提供。

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

如果你想在一個文件中的一切,你可以創建一個代表記錄器的新模塊。

// 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') 
+0

它的工作,感謝peteb內。 – MMR