2014-12-12 19 views

Trả lời

19

RequestLogger plugin không không ghi lại từng yêu cầu. Nó extends the .log property of the req:

Ưu điểm để làm điều này là mỗi trường hợp req restify có một bản ghi dụ Bunyan mới vào nó nơi theo yêu cầu id được tự động bơm vào, vì vậy bạn có thể dễ dàng tương quan các bản ghi thông lượng cao của bạn với nhau.

Trước tiên bạn phải đăng ký trình ghi nhật ký của riêng mình, ví dụ:

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); 

Làm một vài yêu cầu đến /ping endpoint sẽ tạo ra các bản ghi sau:

{"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} 

Thông báo các "req_id" bất động sản.

Các yêu cầu tương đương mà không có sự requestLogger đang

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

sẽ tạo ra các bản ghi sau:

{"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} 

Nếu mục đích của bạn là để đăng nhập mỗi yêu cầu duy nhất, sau đó con kênh

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

ủng hộ:

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

này sẽ sản xuất bản ghi:

{"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

tại sao bạn không chấp nhận câu trả lời của bạn? – vanduc1102

+1

@ vanduc1102 Tôi muốn dành một chút thời gian trước khi chấp nhận câu trả lời của riêng tôi. Thấy không có câu trả lời nào khác, tôi sẽ chấp nhận câu trả lời của riêng tôi. – Gajus

Các vấn đề liên quan