Morgan Logger + Express.js:写入文件并在控制台中显示
Posted
技术标签:
【中文标题】Morgan Logger + Express.js:写入文件并在控制台中显示【英文标题】:Morgan Logger + Express.js: writing file AND showing in console 【发布时间】:2015-01-29 13:47:49 【问题描述】:我正在尝试使用 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);
));
但如果你有更好的……不客气!
【问题讨论】:
【参考方案1】:兄弟,加油!它几乎使用了你提供的一切。 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
注意,我已经创建了日志文件夹,并且我在那里有 access.log 文件:)。
如果您想测试 BOOT YOU NODEJS AS NODE_ENV=production
。
【讨论】:
【参考方案2】:来自github
var logger = require('morgan');
app.use(logger('common',
stream: fs.createWriteStream('./access.log', flags: 'a')
));
app.use(logger('dev'));
【讨论】:
抱歉没有检查答案 @Juan 上面的例子做console.log
信息。 flags: 'a'
以追加模式打开文件。以上是关于Morgan Logger + Express.js:写入文件并在控制台中显示的主要内容,如果未能解决你的问题,请参考以下文章
Node.js - 记录 / 使用 morgan 和 winston