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

And*_*tri 11 javascript logging node.js express

我正在尝试使用Morgan和Express.js来编写日志文件,同时在控制台上显示我的日志.我正在使用此代码:

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

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

如果我这样做(不指定"dev"):

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

我在我的文件上获取日志,但在控制台上没有.

如何获取控制台和文件上的日志?

先感谢您!

编辑:此时我发现了这个解决方案:

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

但如果你有一个更好的...欢迎你!

jwa*_*ags 15

来自github

var logger = require('morgan');

app.use(logger('common', {
    stream: fs.createWriteStream('./access.log', {flags: 'a'})
}));
app.use(logger('dev'));
Run Code Online (Sandbox Code Playgroud)