2017-07-06 73 views
1

是否可以獲取每個日誌輸出的行號和文件?獲取日誌輸出的行號和文件名

例如:

var winston = require('winston'); 

    winston.log('info', 'some message!'); // this is at line 4 of myfile.js 

應在日誌文件中規定,「一些信息」來自myFile.js線來到4.

+0

這個問題與你希望實現的非常相似,除非你希望用winston明確地登錄。 https://stackoverflow.com/questions/14172455/get-name-and-line-of-calling-function-in-node-js – daviscodesbugs

回答

0

您可以通過文件名作爲label,你可以得到的文件來自callingModule的名稱。

創建logger.js文件和代碼像

var winston = require('winston'); 
var getLabel = function (callingModule) { 
    var parts = callingModule.filename.split('/'); 
    return parts[parts.length - 2] + '/' + parts.pop(); 
}; 

module.exports = function (callingModule) { 
    return new winston.Logger({ 
     transports: [ 
      new winston.transports.Console({ 
       label: getLabel(callingModule), 
       json: false, 
       timestamp: true, 
       depth:true, 
       colorize:true 
      }) 
     ] 
    }); 
}; 

現在在這裏你的測試文件

var logger = require('./logger')(module); 
function test() { 
    logger.info('test logger'); 
} 
test(); 

,如果你運行測試文件比輸出看起來像

2017-07-08T07:15:20.671Z - info: [utils/test.js] test logger 
相關問題