:method :url :status :response-time ms - :res[content-length]
short: 简洁输出,带响应时间
:remote-addr :remote-user :method :url HTTP/:http-version :status :res[content-length] - :response-time ms
tiny: 控制台输出
:method :url :status :res[content-length] - :response-time ms
token 自定义格式输出
morgan.token('type', function (req, res) { return req.headers['content-type'] })
:date[format] 日期格式
clf: “10/Oct/2000:13:55:36 +0000”
iso: “2000-10-10T13:55:36.000Z”
web “Tue, 10 Oct 2000 13:55:36 GMT”
:http-version http版本
:method 请求类型
:referrer 请求的引用头
:remote-addr 远程请求地址
:remote-user 远程用户
:req[header] 请求头信息 '-'分隔
:response-time[digits] 请求响应时间
:status 响应状态码
:url 访问地址
:user-agent 浏览器信息
examples
标准Apache组合日志输出
var express = require('express')
var morgan = require('morgan')
var app = express()
app.use(morgan('combined'))
app.get('/', function (req, res) {
res.send('hello, world!')
})
将日志输出到access.log日志文件里
var express = require('express')
var fs = require('fs')
var morgan = require('morgan')
var path = require('path')
var app = express()
// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' })
// setup the logger
app.use(morgan('combined', { stream: accessLogStream }))
app.get('/', function (req, res) {
res.send('hello, world!')
})
每天生成日志文件,并且放到制定目录下
var express = require('express')
var fs = require('fs')
var morgan = require('morgan')
var path = require('path')
var rfs = require('rotating-file-stream')
var app = express()
var logDirectory = path.join(__dirname, 'log')
// ensure log directory exists
fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory)
// create a rotating write stream
let accessLogStream = FileStreamRotator.getStream({
date_format: 'YYYYMMDD', // 日期格式
filename: path.join(logDirectory, 'morgan_%DATE%.log'), //日志文件名称
frequency: 'daily', //
verbose: false
})
// setup the logger
app.use(morgan('combined', { stream: accessLogStream }))
app.get('/', function (req, res) {
res.send('hello, world!')
})