我尝试使用Morgan和Express.js编写日志文件,同时在控制台上显示我的日志。 我使用此代码:
var logger = require('morgan');
var accessLogStream = fs.createWriteStream('./access.log', {flags: 'a'});
app.use(logger("dev",{stream: accessLogStream}));
但是这样我只得到控制台日志,而我的access.log文件仍为空。
如果我这样做(不指定" dev"):
var logger = require('morgan');
var accessLogStream = fs.createWriteStream('./access.log', {flags: 'a'});
app.use(logger({stream: accessLogStream}));
我在我的文件上获取日志,但在控制台上没有。
如何同时获取控制台上的日志和文件?
提前谢谢!
编辑: 此刻我找到了这个解决方案:
app.use(logger({format:"[:date[clf]] :method :url :status :response-time ms",stream: {
write: function(str)
{
accessLogStream.write(str);
console.log(str);
}
}}));
但如果你有一个更好的......欢迎你!
答案 0 :(得分:14)
来自github
var logger = require('morgan');
app.use(logger('common', {
stream: fs.createWriteStream('./access.log', {flags: 'a'})
}));
app.use(logger('dev'));
答案 1 :(得分:0)
在这里你去兄弟!它几乎使用你提供的一切。 100%工作测试结果。
//Logger: production as well as dev. You can set morgan to log differently depending on your environment
if(app.get("env")=="production") {
var accessLogStream = fs.createWriteStream(__dirname + '/logs/' + "access.log", {flags: 'a'});
app.use(morgan({stream: accessLogStream}));
}
else {
app.use(morgan("dev")); //log to console on development
}
N.B我创建了日志文件夹,我有access.log文件:)。
如果您想测试BOOT YOU NODEJS AS NODE_ENV=production
。