我在我的app目录中找不到'test.log'文件?
下面的代码在server.js
中var winston = require('winston'), mylogger = new (winston.Logger)({
transports: [
new (winston.transports.Console) (),
new (winston.transports.File) ({filename: 'test.log'})
]
});
mylogger.log('Hello world');
我的app目录:
/
app/
config/
public/
server.js
答案 0 :(得分:0)
有趣的问题。查看文件传输的源代码,如果未指定,该目录似乎是从filename参数本身派生的。它似乎建议您使用绝对路径或相对路径与明确指定的目录。
这一行是它确定绝对路径的地方。
var fullname = path.join(self.dirname, target);
在此处设置self.dirname:
this.dirname = options.dirname || path.dirname(options.filename);
所以问题是如果options.filename不包含目录,那么path.dirname会返回什么?
我实际上并不知道,但我怀疑有两种可能性:
undefined
而undefined
+'/ test.log'是'/test.log' 您可以采取以下两个步骤:
https://github.com/flatiron/winston/blob/master/lib/winston/transports/file.js
答案 1 :(得分:0)
我写了一个这样的测试文件:
var winston = require('winston');
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)(),
new (winston.transports.File)({ filename: 'somefile.log' })
]
});
logger.log('info', 'Hello distributed log files!');
logger.info('Hello again distributed logs');
process.exit();
我发现如果我删除了最后一行,就会创建并正确记录日志文件。
我使用process.exit()
来破坏我的程序,因为我只是想测试记录器,看起来它在某种程度上打破了日志文件上的进程。