私は同じ問題を抱えていた、私はロガーモジュールの内部に見て、かなりこのカスタムミドルウェア(警告、CoffeeScriptの)で、そこにあるものに複製します。
ボーナスとして、メタデータフィールドも使用してデータを記録します。
(req, res, next) ->
sock = req.socket
req._startTime = new Date
req._remoteAddress = sock.socket && sock.socket.remoteAddress || sock.remoteAddress;
_url =() -> req.originalUrl || req.url
_method =() -> req.method
_respTime =() -> String(Date.now() - req._startTime)
_status =() -> res.headerSent && res.statusCode || null
_remoteAddr =() -> req.ip || req._remoteAddress || (req.socket?.socket? && req.socket.socket.remoteAddress) || req.socket.remoteAddress
_usrAgent =() -> req.headers['user-agent']
logRequest =() ->
res.removeListener 'finish', logRequest
res.removeListener 'close', logRequest
winston.info "#{_method()} #{_url()} #{_status()} #{_remoteAddr()} #{_usrAgent()} #{_respTime()}",
http_access:
method: _method()
url: _url()
status: _status()
remote_address: _remoteAddr()
user_agent: _usrAgent()
res.on 'finish', logRequest
res.on 'close', logRequest
next()
ありがとうございました。それは私をちょうどいいよ!乾杯! :) – littlejim84
ログに改行を入れないようにメッセージを書き留めておきます – nflacco
@nflacco chomp? – UpTheCreek