2016-01-09 79 views
2

在我的node.js項目中,我使用log4js,並且我希望我的日誌具有添加日誌記錄的文件的名稱。所以我用__filename,但它給了我絕對路徑node.js獲取相對於文件的項目/ src路徑

var logger = log4js.getLogger(__filename) 

所以它給了我記錄是這樣的:

[1999-01-01 00:00:00] [DEBUG] /Users/whatever/myproject/src/services/users something happened 

但我想的路徑,是相對於我的項目/ src文件夾。像這樣:

[1999-01-01 00:00:00] [DEBUG] services/users something happened 

實現此目的的最佳方法是什麼?

回答

11

您可以使用path.relative

var relativePath = path.relative(process.cwd(), someFilePath); 
+0

謝謝,這就是我的樣子爲...而努力。但我決定只用明確的log4js.getLogger('services/user'),因爲使用require('path') –

1
var root = '/Users/whatever/myproject/src/'; 

var filename = __filename.replace(root, ''); 

replace將替換第一次出現這樣即使你有幾次root模式,將只更換一次。

0

你可以使用path.basename()__dirname__filename兩個:

var path = require('path'); 
var here = path.basename(__dirname) + '/' + path.basename(__filename, '.js'); 

或者,如果你喜歡的正則表達式,你可以這樣做:

var here = /\/([^/]+\/[^/]+)\.js$/.exec(__filename)[1]; 
+0

感謝您的建議!不幸的是它只能用於兩個級別,所以如果我有類似'services/external/api'的東西,它將無濟於事 –