Morgan Logger + Express.js:写入文件并在控制台中显示

我试图用Express.js和Morgan一起在控制台上显示我的日志的同时写一个日志文件。 我正在使用这个代码:

var logger = require('morgan'); var accessLogStream = fs.createWriteStream('./access.log', {flags: 'a'}); app.use(logger("dev",{stream: accessLogStream})); 

但是这样我只能得到控制台日志,而我的access.log文件仍然是空的。

如果我这样做,而不是(指定“开发”):

 var logger = require('morgan'); var accessLogStream = fs.createWriteStream('./access.log', {flags: 'a'}); app.use(logger({stream: accessLogStream})); 

我得到我的文件日志,但不是在控制台上。

我怎样才能获得控制台上的日志和文件?

先谢谢你!

编辑:在这一刻我已经find了这个解决scheme:

 app.use(logger({format:"[:date[clf]] :method :url :status :response-time ms",stream: { write: function(str) { accessLogStream.write(str); console.log(str); } }})); 

但如果你有一个更好的…不客气!

从github

 var logger = require('morgan'); app.use(logger('common', { stream: fs.createWriteStream('./access.log', {flags: 'a'}) })); app.use(logger('dev')); 

在这里你去兄弟! 它几乎使用你提供的一切。 100%的工作testing结果。

 //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 } 

NB我已经创build日志文件夹,我有access.log文件:)。

如果你想testingBOOT YOU NODEJS AS NODE_ENV=production