HTTP request log middleware
npm i -S http-logs
const app = require('express')()
const logger = require('http-logs')
app.use(logger())
app.listen(3000)
> GET / HTTP/1.1 200 1ms
logger([preset | token][,options])
preset | output | description |
---|---|---|
normal | GET / HTTP/1.1 200 218ms | 默认 |
tiny | GET / 200 | 简单 |
long | [2017-05-14 21:03:25 周日] ::ffff:192.168.0.100 /index.html HTTP/1.1 304 23ms Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 |
详细 |
token | output | description |
---|---|---|
method | GET | 请求方法 |
url | /path/to/resource | 请求路径 |
httpVersion | HTTP/1.1 | http版本 |
status | 200 | 响应状态码 |
duration | 28ms | 请求到输出完成的持续时间 |
ip | ::ffff:192.168.0.100 | IP地址 |
date | 2017-05-14 | 请求开始日期 |
time | 19:00:00 | 请求开始时间 |
day | 周日 | 请求开始星期 |
userAgent | Mozilla/5.0 | 客户端用户代理内容 |
const token = '[:date :time] :method :url :httpVersion :status'
app.use(logger(token))
// [2017-05-14 19:23:33] GET /index.html HTTP/1.1 200
重定义token
const token = '[:date :when :time] :method :url'
const options = {
// 增加新的token类型when
when: function (req, res) {
return (new Date().getHours() >= 12) ? '下午' : '上午'
},
// 重写method
method: function (req, res) {
return req.method.toLowerCase()
}
}
app.use(logger(token, options))
// [2017-05-14 上午 10:22:29] get /index.html