Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用Restify';什么是请求记录器?_Node.js_Restify_Bunyan - Fatal编程技术网

Node.js 如何使用Restify';什么是请求记录器?

Node.js 如何使用Restify';什么是请求记录器?,node.js,restify,bunyan,Node.js,Restify,Bunyan,使用当前请求id以及您定义的任何其他参数设置子bunyan记录器 注册插件不会记录请求。RequestLogger插件不会记录每个请求。它: 这样做的好处是,每个restify req实例上都有一个新的bunyan实例日志,请求id自动注入其中,因此您可以轻松地将高吞吐量日志关联在一起 您必须先注册自己的记录器,例如 var restify = require('restify'), bunyan = require('bunyan'), // Create a logger.

使用当前请求id以及您定义的任何其他参数设置子bunyan记录器


注册插件不会记录请求。

RequestLogger
插件不会记录每个请求。它:

这样做的好处是,每个restify req实例上都有一个新的bunyan实例日志,请求id自动注入其中,因此您可以轻松地将高吞吐量日志关联在一起

您必须先注册自己的记录器,例如

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);
/ping
端点发出一些请求将生成以下日志:

{"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}
{"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}
请注意“req_id”属性

不带
requestLogger
代码的等效请求

server.use(restify.requestLogger({
    log: log,
    serializers: restify.bunyan.serializers
}));
将生成以下日志:

{"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}
{"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}
如果您的目的是记录每个请求,那么请放弃

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

server.on('after', restify.auditLogger({
    log: log
}));
这将生成日志:

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

@在接受我自己的答案之前,我宁愿给自己一些时间。鉴于没有其他答案,我将接受我自己的答案。