Morgan简单的express模块
一、Morgan有什么特点
由express官方团队维护
- morgan配置非常简单
- 支持自定义日志格式
- 支持日志压缩
- 支持分文件存储
二、安装
npm install morgan --save
三、使用入门
const express=require('express');
const morgan=require('morgan');
const port=3721;
const app=express();
app.use(morgan());
app.get('/',(req,res)=>{
res.end('hello world');
});
app.listen(port,()=>{
console.log(`server listen ${port}`);
});
四、优化配置
- 配置日志格式
(1) :url 请求url,req.originalUrl或者req.url
(2) :total-time[digits] 处理当期请求所用时间
(3) :status 处理返回的状态码
(4) :date[format] 处理的时间 format支持iso(2000-10-10T13:55:36.000Z) clf(10/Oct/2000:13:55:36 +0000)web(Tue, 10 Oct 2000 13:55:36 GMT)
(5) :remote-addr 访问者ip - 筛选只输出部分日志
skip:function(req,res){
retrun res.statusCode<400;
} - 保存到文件
const express=require('express');
const morgan=require('morgan');
const rfs = require('rotating-file-stream') // version 2.x
const fs=require('fs');
const path=require('path');
const port=3721;
const app=express();
var accessLogStream = rfs.createStream('access.log', {
interval: '1d', // rotate daily
path: path.join(__dirname, 'log')
})
app.use(morgan('[:date[iso]] [:remote-addr] :url - :status - :total-time[2] ',{
skip:function(req,res){
return res.statusCode<400;
},
stream: accessLogStream
}));
app.get('/',(req,res)=>{
res.status(400).end('hello world');
});
app.listen(port,()=>{
console.log(`server listen ${port}`);
});