A koa middleware for logging http requests.
$ npm install koa2-request-log --save
Typescript:
import * as Koa from 'koa'
import Logger from 'koa2-request-log'
const app = new Koa()
const logger = (new Logger()).generate() // default setting
const loggerWithOpts = (new Logger()).generate({
logColor: '#000',
stream: process.stdout, // log at console or you can write to a file
logFmt: ':method :path :status',
skip(req, res) {
return res.status >= 400
}
}) // log with some options
app.use(logger)
app.use(loggerWithOpts) // could use multiple loggers
app.listen(3000, () => {
console.log('app start')
})
Javascript:
const Koa = require('koa')
const Logger = require('koa2-request-log').default
const app = new Koa()
const logger = (new Logger()).generate()
const loggerWithOpts = (new Logger()).generate({
logColor: '#000',
stream: process.stdout,
logFmt: ':method :path :status',
skip(req, res) {
return res.status >= 400
}
})
app.use(logger)
app.use(loggerWithOpts)
app.listen(3000, () => {
console.log('app start')
})
Define the log color via the hex string(eg.#000
) or chalk wrapper(chalk.rgb(0, 0, 0)
).
Using node writable stream
to define the log output location.e.g.process.stdout
.
Output the log to a file:
const fs = require('fs')
const stream = fs.createWriteStream(path.join(__dirname, 'log/app.log'), {
flags: 'a'
})
app.use(logger({
stream
}))
Function to determine if log is skipped,defaults to false.The function could get the koa request object and koa response object as params: skip(req, res)
.
Customize the log output format.For example::method --> :path
.
The protocol of the request.e.g.http
.
Http version of the request.e.g.1.1
.
Http method of the request.e.g.GET
.
Http path of the request.e.g./user
.
Http status of response.e.g.200
.
Http response time of response.e.g.200ms
.
Request initiation time.e.g.Sat Feb 23 2019 11:57:30 GMT+0800
.
Get Http request header.e.g.:req[host]
--> localhost:3002.
Get Http response header.e.g.:res[content-length]
--> 4.