2014-12-12 17 views

risposta

19

RequestLogger plug-in fa non registrare ogni richiesta. E 'extends the .log property of the req:

Il vantaggio di questa operazione è che ogni istanza REQ restify ha un nuovo registro istanza Bunyan su di esso in cui la richiesta id viene iniettato automaticamente, in modo da poter facilmente correlare i log di high-throughput insieme.

È necessario innanzitutto registrare il proprio registratore automatico, ad es.

var restify = require('restify'), 
    bunyan = require('bunyan'), 
    // Create a logger. 
    log = bunyan.createLogger({name: 'showtime'}), 
    server; 

// Register logger. 
server = restify.createServer({ 
    log: log 
}); 

// Extend logger using the plugin. 
server.use(restify.requestLogger()); 

// Use req.log property as a regular instance of bunyan logger. 
server.use(function (req, res, next) { 
    req.log.info('TEST'); 
    next(); 
}); 

server.get('/ping', function (req, res, next) { 
    res.send('pong'); 
    next(); 
}); 

server.listen(8080); 

Fare un paio di richieste al /ping endpoint produrrà i seguenti registri:

{"name":"showtime","hostname":"localhost.localdomain","pid":6446,"req_id":"3c734e70-81de-11e4-bc58-e3e7254ff287","level":30,"msg":"TEST","time":"2014-12-12T09:07:02.488Z","v":0} 
{"name":"showtime","hostname":"localhost.localdomain","pid":6446,"req_id":"3d6bdf40-81de-11e4-bc58-e3e7254ff287","level":30,"msg":"TEST","time":"2014-12-12T09:07:04.116Z","v":0} 
{"name":"showtime","hostname":"localhost.localdomain","pid":6446,"req_id":"3df47030-81de-11e4-bc58-e3e7254ff287","level":30,"msg":"TEST","time":"2014-12-12T09:07:05.011Z","v":0} 

Avviso il "REQ_ID" proprietà.

Le richieste equivalenti senza il codice requestLogger

server.use(restify.requestLogger({ 
    log: log, 
    serializers: restify.bunyan.serializers 
})); 

produrrà i seguenti registri:

{"name":"showtime","hostname":"localhost.localdomain","pid":6448,"level":30,"msg":"TEST","time":"2014-12-12T09:07:23.099Z","v":0} 
{"name":"showtime","hostname":"localhost.localdomain","pid":6448,"level":30,"msg":"TEST","time":"2014-12-12T09:07:24.527Z","v":0} 
{"name":"showtime","hostname":"localhost.localdomain","pid":6448,"level":30,"msg":"TEST","time":"2014-12-12T09:07:24.674Z","v":0} 

Se la vostra intenzione è quella di registrare ogni singola richiesta, poi fosso

server.use(function (req, res, next) { 
    req.log.info('TEST'); 
    next(); 
}); 

a favore di:

server.on('after', restify.auditLogger({ 
    log: log 
})); 

Questo produrrà tronchi:

{"name":"showtime","hostname":"localhost.localdomain","pid":6451,"audit":true,"level":30,"remoteAddress":"192.168.100.1","remotePort":58986,"req_id":"00093110-81df-11e4-981e-e3d13800c8bf","req":{"method":"GET","url":"/ping","headers":{"user-agent":"curl/7.37.1","host":"192.168.100.100:8080","accept":"*/*"},"httpVersion":"1.1","trailers":{},"version":"*","timers":{"bunyan":378,"handler-1":3044}},"res":{"statusCode":200,"headers":{"content-type":"application/json","content-length":6},"trailer":false},"latency":6,"_audit":true,"msg":"handled: 200","time":"2014-12-12T09:12:30.629Z","v":0} 
{"name":"showtime","hostname":"localhost.localdomain","pid":6451,"audit":true,"level":30,"remoteAddress":"192.168.100.1","remotePort":58989,"req_id":"2b2fcac0-81df-11e4-981e-e3d13800c8bf","req":{"method":"GET","url":"/ping","headers":{"user-agent":"curl/7.37.1","host":"192.168.100.100:8080","accept":"*/*"},"httpVersion":"1.1","trailers":{},"version":"*","timers":{"bunyan":105,"handler-1":607}},"res":{"statusCode":200,"headers":{"content-type":"application/json","content-length":6},"trailer":false},"latency":1,"_audit":true,"msg":"handled: 200","time":"2014-12-12T09:13:43.021Z","v":0} 
{"name":"showtime","hostname":"localhost.localdomain","pid":6451,"audit":true,"level":30,"remoteAddress":"192.168.100.1","remotePort":58990,"req_id":"2b6532a0-81df-11e4-981e-e3d13800c8bf","req":{"method":"GET","url":"/ping","headers":{"user-agent":"curl/7.37.1","host":"192.168.100.100:8080","accept":"*/*"},"httpVersion":"1.1","trailers":{},"version":"*","timers":{"bunyan":7067,"handler-1":677}},"res":{"statusCode":200,"headers":{"content-type":"application/json","content-length":6},"trailer":false},"latency":8,"_audit":true,"msg":"handled: 200","time":"2014-12-12T09:13:43.371Z","v":0} 
+0

perché non accetta la tua risposta? – vanduc1102

+1

@ vanduc1102 Preferisco dare un po 'di tempo prima di accettare le mie risposte. Vedendo che non ci sono state altre risposte, accetterò il mio. – Gajus

Problemi correlati