author
Vous souhaitez pouvoir logger les connections HTTP rentrantes avec Node.js et Express ? Rien de plus simple! Il suffit de déclarer un middleware de la façon suivante:
util = require 'util'
module.exports = (req, res, next) ->
console.log """---------------------------------------------------------
Http Request - Pid process: [#{process.pid}]
Http Request - Url: #{req.url}
Http Request - Query: #{util.inspect(req.query)}
Http Request - Method: #{req.method}
Http Request - Headers: #{util.inspect(req.headers)}
Http Request - Body: #{util.inspect(req.body)}
---------------------------------------------------------"""
next()
Comme vous pouvez le voir, aucun module externe n’est nécessaire. Il suffit ensuite d’intégrer votre nouveau middleware dans le code de configuration de votre serveur Express, comme suit:
express = require 'express'
requestLogger = require './lib/requestLogger'
app = express()
app.configure ->
console.log "Environment: #{app.get('env')}"
app.set 'port', 8000
...
app.use requestLogger
...
app.use app.router
app.listen app.get('port')
Le log résultant d’une requête HTTP prendra la forme suivante:
---------------------------------------------------------
Http Request - Pid process: [26074]
Http Request - Url: /
Http Request - Query: {}
Http Request - Method: GET
Http Request - Headers: { host: 'localhost:9000',
connection: 'keep-alive',
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36',
'accept-encoding': 'gzip,deflate,sdch',
'accept-language': 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4',
cookie: '...' }
Http Request - Body: undefined
---------------------------------------------------------