morgan中间件
控制台输出
在进行nodejs的express进行开发的时候,一般使用了生成器的话,生成器默认会使用morgan中间件来记录请求信息。但是在使用app.use(logger('dev'));的时候,只会将请求信息打印到控制台,虽然这样方便调试,但是在实际的生产中,日志通常都会记录在日志文件中。具体如下:
const logger = require('morgan');
app.use(logger('dev'));
日志记录:
单一文件记录:
var express = require('express');
var fs = require('fs');
var logger = require('morgan');
var app = express();
// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream(__dirname + '/access.log', {flags: 'a'});
// setup the logger
app.use(logger('combined', {stream: accessLogStream}));
app.get('/', function (req, res) {
res.send('hello, world!');
});
日期文件记录:
在日期记录的时候,需要配置file-stream-rotator模块来生产日志文件。
var FileStreamRotator = require('file-stream-rotator');
var express = require('express');
var fs = require('fs');
var logger = require('morgan');
var app = express();
var logDirectory = __dirname + '/logs';
// ensure log directory exists
fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory);
// create a rotating write stream
var accessLogStream = FileStreamRotator.getStream({