我有同样的问题,我看着记录器组件的内部和几乎复制还有什么,在这个自定义中间件(警告,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 2012-02-22 18:25:01
记得跺脚的消息,以免你在日志中换行 – nflacco 2012-09-25 20:06:46
@nflacco chomp? – UpTheCreek 2012-10-31 12:31:02