Wondering what’s next for npm?Check out our public roadmap! »

    access-log

    0.4.1 • Public • Published

    access-log

    Add simple access logs to any http or https server

    Usage

    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

    accesslog(req, res, [opts], [function])

    opts

    Opts is an object that can contain a format identifier and userID func (both optional).

    For example,

    {
        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 format
    • contentLength: The response Content-Length header, or - if unset
    • delta: The time in ms from request to response
    • endDate: The ISO formatted string when the response was ended
    • endTime: The epoch time when the response was ended
    • host: The host header from the request if set
    • httpVersion: The HTTP version used (ie. 1.0, 1.1)
    • ip: The remote IP
    • Xip: The remote IP, using X-Forwarded-For if set
    • method: The HTTP method
    • protocol: HTTP or HTTPS
    • referer: The request Referer header, or - if unset
    • startDate: The ISO formatted string when the request was received
    • startTime: The epoch time when the request was received
    • statusCode: The response status code sent from the server
    • url: The requested URL
    • urlDecoded: The decoded request URL (ie. %20 => )
    • userID: The username if applicable
    • userAgent: 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

    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 module to prepend a timestamp automatically.

    License

    MIT Licensed

    Install

    npm i access-log

    DownloadsWeekly Downloads

    1,456

    Version

    0.4.1

    License

    none

    Last publish

    Collaborators

    • avatar