GithubHelp home page GithubHelp logo

node-access-log's Introduction

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] (https://github.com/bahamas10/node-log-timestamp) module to prepend a timestamp automatically.

License

MIT Licensed

node-access-log's People

Contributors

asilvas-godaddy avatar bahamas10 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

node-access-log's Issues

possible risk

someone could set their user-agent to something like :ip, and that'll get expanded first... possible i think.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.