2017-04-17 13 views
3

私はすべてのファイルにこの2行を入れることで、すべてのファイルに対してloggsを書き込んだ10個のファイルを持っています。winstonの一意のファイル名を入れる方法は?

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

は、それから私は、私は誰もがme.Thanksを助けるfile.Canだけですべての私のコントローラ(Node.jsの)のログをするエラーに

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

Error: Transport already attached: file, assign a different name 

を得ました。

答えて

2

新しいwinston.transports.Fileのために渡されるオブジェクトのfilenameプロパティを一意に変更するだけです。

たとえば、2つの最初の行を10個の別々のファイルに追加する場合は、winstonによって作成されるログファイルの名前に_${__filename}が追加されます。 __filenameは、実行時にすべてのモジュールにNode Module Wrapperによって提供されます。

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

すべてを1つのファイルにまとめたい場合は、ロガーを表す新しいモジュールを作成するだけです。

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

module.exports = logger 

次に、あなたのコントローラー

// 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内部logger.jsを必要とすることができます。 – MMR

関連する問題