Express的日志模块morgan

morgan 是nodejs的一个日志模块,由 express 团队维护。

这里通过示例简要介绍morgan模块在express中的应用,大部分示例直接来自于。
morgan的文档:https://github.com/expressjs/morgan

1). 用法及参数
1.首先需要安装morgan模块:

npm install morgan --save

2.morgan的API:
morgan(format, options);
其中 format 表示日志的格式, morgan预定义了一些日志格式,用常量字符串表示,如’combined’, ‘common’, ‘short’, ‘dev’等;options表示选项,比如将日志输出到终端或者文件,这个参数是可选的。

format 为’combined’时的日志样例:

GET / 200 47.332 ms - 5137
GET /javascripts/jquery-2.1.4.min.js 304 12.931 ms 

ormat 为’short’时的日志样例:

GET /home HTTP/1.1 304 - - 3.345 ms

3.在app.js中添加

var logger = require('morgan');
const fs = require('fs');
const moment = require('moment');

// create a write stream (in append mode)


var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), {
    flags: 'a',  //   在该参数值中可以使用flag属性指定对该文件采取什么操作,默认值为‘r’(如果指定读取的文件不存在,则抛出异常)
    encoding: 'utf8'  //使用encoding属性指定使用何种编码格式来读取该文件
})
  createWriteStream  //createWriteStream方法创建一个写入数据流对象,该对象的write方法用于写入数据,end方法用于结束写入操作。
// setup the logger 同时加载输出到终端和文件的morgan对象


app.use(logger('dev', {   
    stream: accessLogStream
}));

4 日志输出到文件,并按天轮转

var express = require('express');
var morgan = require('morgan');
var fs = require('fs');
var path =  require('path');
var fileStreamRotator = require('file-stream-rotator');
var app = express();
var logDir = path.join(__dirname, 'logs');
// ensure log directory exists
fs.existsSync(logDir) || fs.mkdirSync(logDir);
// create a rotating write stream
var accessLogStream = fileStreamRotator.getStream({
    date_format: 'YYYYMMDD',
    filename: path.join(logDir, 'access-%DATE%.log'),
    frequency: 'daily',
    verbose: true
});
app.use(morgan('common', {stream: accessLogStream}));
app.get('/to-rotate-file', function(req, res) {
    res.send('done!');
});
app.listen(3000);

注:参考文献 http://ju.outofmemory.cn/entry/277400

posted @ 2018-01-31 20:41  开始战斗  阅读(508)  评论(0编辑  收藏  举报