|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- # morgan
-
- [![NPM Version][npm-image]][npm-url]
- [![NPM Downloads][downloads-image]][downloads-url]
- [![Build Status][travis-image]][travis-url]
- [![Test Coverage][coveralls-image]][coveralls-url]
- [![Gratipay][gratipay-image]][gratipay-url]
-
- HTTP request logger middleware for node.js
-
- > Named after [Dexter](http://en.wikipedia.org/wiki/Dexter_Morgan), a show you should not watch until completion.
-
- ## API
-
- ```js
- var morgan = require('morgan')
- ```
-
- ### morgan(format, options)
-
- Create a new morgan logger middleware function using the given `format` and `options`.
- The `format` argument may be a string of a predefined name (see below for the names),
- a string of a format string, or a function that will produce a log entry.
-
- #### Options
-
- Morgan accepts these properties in the options object.
-
- #### buffer
-
- Buffer duration before writing logs to the `stream`, defaults to `false`. When
- set to `true`, defaults to `1000 ms`.
-
- #### immediate
-
- Write log line on request instead of response. This means that a requests will
- be logged even if the server crashes, _but data from the response (like the
- response code, content length, etc.) cannot be logged_.
-
- ##### skip
-
- Function to determine if logging is skipped, defaults to `false`. This function
- will be called as `skip(req, res)`.
-
- ```js
- // EXAMPLE: only log error responses
- morgan('combined', {
- skip: function (req, res) { return res.statusCode < 400 }
- })
- ```
-
- ##### stream
-
- Output stream for writing log lines, defaults to `process.stdout`.
-
- #### Predefined Formats
-
- There are various pre-defined formats provided:
-
- ##### combined
-
- Standard Apache combined log output.
-
- ```
- :remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"
- ```
-
- ##### common
-
- Standard Apache common log output.
-
- ```
- :remote-addr - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length]
- ```
-
- ##### dev
-
- Concise output colored by response status for development use. The `:status`
- token will be colored red for server error codes, yellow for client error
- codes, cyan for redirection codes, and uncolored for all other codes.
-
- ```
- :method :url :status :response-time ms - :res[content-length]
- ```
-
- ##### short
-
- Shorter than default, also including response time.
-
- ```
- :remote-addr :remote-user :method :url HTTP/:http-version :status :res[content-length] - :response-time ms
- ```
-
- ##### tiny
-
- The minimal output.
-
- ```
- :method :url :status :res[content-length] - :response-time ms
- ```
-
- #### Tokens
-
- - `:req[header]` ex: `:req[Accept]`
- - `:res[header]` ex: `:res[Content-Length]`
- - `:http-version`
- - `:response-time`
- - `:remote-addr`
- - `:remote-user`
- - `:date`
- - `:method`
- - `:url`
- - `:referrer`
- - `:user-agent`
- - `:status`
-
- To define a token, simply invoke `morgan.token()` with the name and a callback function. The value returned is then available as ":type" in this case:
- ```js
- morgan.token('type', function(req, res){ return req.headers['content-type']; })
- ```
-
- ## Examples
-
- ### express/connect
-
- Simple app that will log all request in the Apache combined format to STDOUT
-
- ```js
- var express = require('express')
- var morgan = require('morgan')
-
- var app = express()
-
- app.use(morgan('combined'))
-
- app.get('/', function (req, res) {
- res.send('hello, world!')
- })
- ```
-
- ### vanilla http server
-
- Simple app that will log all request in the Apache combined format to STDOUT
-
- ```js
- var finalhandler = require('finalhandler')
- var http = require('http')
- var morgan = require('morgan')
-
- // create "middleware"
- var logger = morgan('combined')
-
- http.createServer(function (req, res) {
- var done = finalhandler(req, res)
- logger(req, res, function (err) {
- if (err) return done(err)
-
- // respond to request
- res.setHeader('content-type', 'text/plain')
- res.end('hello, world!')
- })
- })
- ```
-
- ### write logs to a file
-
- Simple app that will log all request in the Apache combined format to the file "access.log"
-
- ```js
- var express = require('express')
- var fs = require('fs')
- var morgan = require('morgan')
-
- var app = express()
-
- // create a write stream (in append mode)
- var accessLogStream = fs.createWriteStream(__dirname + '/access.log', {flags: 'a'})
-
- // setup the logger
- app.use(morgan('combined', {stream: accessLogStream}))
-
- app.get('/', function (req, res) {
- res.send('hello, world!')
- })
- ```
-
- ## License
-
- [MIT](LICENSE)
-
- [npm-image]: https://img.shields.io/npm/v/morgan.svg?style=flat
- [npm-url]: https://npmjs.org/package/morgan
- [travis-image]: https://img.shields.io/travis/expressjs/morgan.svg?style=flat
- [travis-url]: https://travis-ci.org/expressjs/morgan
- [coveralls-image]: https://img.shields.io/coveralls/expressjs/morgan.svg?style=flat
- [coveralls-url]: https://coveralls.io/r/expressjs/morgan?branch=master
- [downloads-image]: http://img.shields.io/npm/dm/morgan.svg?style=flat
- [downloads-url]: https://npmjs.org/package/morgan
- [gratipay-image]: https://img.shields.io/gratipay/dougwilson.svg?style=flat
- [gratipay-url]: https://www.gratipay.com/dougwilson/
|