morgan日志中间件

morgan日志中间件

  • 只能记录 http 请求日志
$ npm install morgan -S # 下载

基本使用

var logger = require("morgan");
app.use(logger("dev")); // 将日志输出到控制台
// 方法 路径 状态码 时间 GET /users 200 53.454 ms - 23

将日志按照日期保存到日志文件中

var logger = require("morgan");
var rfs = require("rotating-file-stream");

// 将日志写入log目录文件中
// 解决:时区不一致的问题
logger.token("date", function() {
  var p = new Date()
    .toString()
    .replace(/[A-Z]{3}\+/, "+")
    .split(/ /);
  return p[2] + "/" + p[1] + "/" + p[3] + ":" + p[4] + " " + p[5];
});
var accessLogStream = rfs.createStream("access.log", {
  size: "10M", // 每10M大小轮换
  interval: "1d", // 每天轮换
  path: path.join(__dirname, "log") // 手动创建日志目录"/log"
});
app.use(logger("combined", { stream: accessLogStream }));

预定义日志格式

  • format 即是日志格式, 支持自定义日志格式, 同时 morgan 提供了几个预定义选项:
// combined ip, 时间, 请求方法, 请求url, HTTP版本, 状态码, 响应内容长度, referrer, user-agent
// common ip, 时间, 请求方法, 请求url, HTTP版本, 状态码, 响应内容长度
// dev 请求方法, 请求url, 状态码, 响应时间, 响应内容长度
// short ip, 请求方法, 请求url, HTTP版本, 状态码, 响应内容长度, 响应时间
// tiny 请求方法, 请求url, 状态码, 响应内容长度, 响应时间