在我的node.js项目中,我使用log4js,我希望我的日志具有添加日志记录的文件的名称。所以我使用__filename,但它给了我绝对路径
var logger = log4js.getLogger(__filename)
所以它给我这样的日志:
[1999-01-01 00:00:00] [DEBUG] /Users/whatever/myproject/src/services/users something happened
但我希望路径相对于我的project / src文件夹。像这样:
[1999-01-01 00:00:00] [DEBUG] services/users something happened
实现这一目标的最佳方法是什么?
答案 0 :(得分:31)
您可以使用path.relative
:
var relativePath = path.relative(process.cwd(), someFilePath);
答案 1 :(得分:2)
var root = '/Users/whatever/myproject/src/';
var filename = __filename.replace(root, '');
字符串replace
将替换第一次出现,因此即使您有多次root
模式,它也只会被替换一次。
答案 2 :(得分:0)
您可以将path.basename()
与__dirname
和__filename
同时使用:
var path = require('path');
var here = path.basename(__dirname) + '/' + path.basename(__filename, '.js');
或者,如果你喜欢正则表达式,你可以这样做:
var here = /\/([^/]+\/[^/]+)\.js$/.exec(__filename)[1];