Add simple access logs to any http or https server
npm install access-logaccess-log
==========
Add simple access logs to any http or https server
Usage
-----
`` js
var http = require('http');
var accesslog = require('access-log');
http.createServer(function(req, res) {
accesslog(req, res);
res.end();
}).listen(80, '0.0.0.0');
`
This will automatically log requests as they come in to the
web server that look like...
``
127.0.0.1 - - [13/Sep/2013:01:38:09 -0400] "GET / HTTP/1.1" 200 - "-" "-"
127.0.0.1 - - [13/Sep/2013:01:38:09 -0400] "GET /testing HTTP/1.1" 200 - "-" "-"
127.0.0.1 - - [13/Sep/2013:01:38:10 -0400] "GET /index.html HTTP/1.1" 200 - "-" "-"
Customization
-------------
#### opts
Opts is an object that can contain a format identifier and userID func (both optional).
For example,
` js`
{
userID: function (req) { return req.user; },
format : 'url=":url" method=":method" statusCode=":statusCode" delta=":delta" ip=":ip"'
}
You can pass in a format string, the default is Apache Common Log Format
http://en.wikipedia.org/wiki/Common_Log_Format
If opts is a string, it is assumed to be the opts.format property.
``
:ip - :userID [:clfDate] ":method :url :protocol/:httpVersion" :statusCode :contentLength ":referer" ":userAgent"
- clfDate: The date of the end of the response in Apache Common Log formatcontentLength
- : The response Content-Length header, or - if unsetdelta
- : The time in ms from request to responseendDate
- : The ISO formatted string when the response was endedendTime
- : The epoch time when the response was endedhost
- : The host header from the request if sethttpVersion
- : The HTTP version used (ie. 1.0, 1.1)ip
- : The remote IPXip
- : The remote IP, using X-Forwarded-For if setmethod
- : The HTTP methodprotocol
- : HTTP or HTTPSreferer
- : The request Referer header, or - if unsetstartDate
- : The ISO formatted string when the request was receivedstartTime
- : The epoch time when the request was receivedstatusCode
- : The response status code sent from the serverurl
- : The requested URLurlDecoded
- : The decoded request URL (ie. %20 => )userID
- : The username if applicableuserAgent
- : The request User-Agent header, or - if unset
NOTE: Wrap variables in {} to protect against unwanted interpolation.
ex:
``
request to :url took :{delta}ms
#### function
You can also pass in your own custom callback, the default is console.log.
The only argument passed is the access log string
Example
-------
` js
var format = 'url=":url" method=":method" statusCode=":statusCode" delta=":delta" ip=":ip"';
accesslog(req, res, format, function(s) {
console.log(s);
});
`
yields
```
url="/projects" method="GET" statusCode="200" delta="0" ip="127.0.0.1"
url="/testing" method="GET" statusCode="200" delta="1" ip="127.0.0.1"
url="/index.html" method="GET" statusCode="200" delta="0" ip="127.0.0.1"
Installation
------------
npm install access-log
Extend
------
Consider further customizing the access logs by using the [log-timestamp]
(https://github.com/bahamas10/node-log-timestamp) module to prepend a timestamp
automatically.
License
-------
MIT Licensed