Sam*_*duc 14 node.js express restify
我正在使用restify构建API,我已经习惯了express.有没有办法restify在控制台中记录每个请求,就像express有app.use(express.logger('dev'))?
jam*_*ung 21
这是一个非常简单的Restify/Bunyan示例,它将记录每个请求:
'use strict';
var Logger = require('bunyan'),
restify = require('restify'),
log = new Logger.createLogger({
name: 'app-name',
serializers: {
req: Logger.stdSerializers.req
}
}),
server = restify.createServer({
name: 'app-name',
version: '0.1.0',
log: log
});
server.pre(function (request, response, next) {
request.log.info({ req: request }, 'REQUEST');
next();
});
server.get('/', function (request, response, next) {
response.send('It worked!');
next();
});
server.listen(8080, function () {
console.log('%s listening at %s', server.name, server.url);
});
Run Code Online (Sandbox Code Playgroud)
关键是server.pre()电话.
在一个终端窗口中启动它,并在另一个终端窗口中执行卷曲请求.您将看到它的响应,以及请求的日志条目.
假设一些事情:
server.js你会做/看到以下内容:
终端窗口1
$ node server.js
app-name listening at http://0.0.0.0:8080
{"name":"app-name","hostname":"leeloo.local","pid":97387,"level":30,"req":{"method":"GET","url":"/","headers":{"user-agent":"curl/7.30.0","host":"localhost:8080","accept":"*/*"},"remoteAddress":"127.0.0.1","remotePort":60870},"msg":"REQUEST","time":"2014-04-21T17:55:52.487Z","v":0}
Run Code Online (Sandbox Code Playgroud)
终端窗口2
$ curl localhost:8080/
"It worked!"
Run Code Online (Sandbox Code Playgroud)
如果有人想看到我,package.json我可以把所有这些都放在一个要点.
Jav*_*diz 12
您还可以使用Express中使用的Morgan记录器中间件.由于Restify故意从Express中大量借用,因此配置完全相同.
这是Usage服务器示例的获取方式:
var restify = require('restify');
var logger = require('morgan')
var server = restify.createServer({
name: 'myapp',
version: '1.0.0'
});
server.use(logger('dev'));
server.use(restify.acceptParser(server.acceptable));
server.use(restify.queryParser());
server.use(restify.bodyParser());
server.get('/echo/:name', function (req, res, next) {
res.send(req.params);
return next();
});
server.listen(8080, function () {
console.log('%s listening at %s', server.name, server.url);
});
Run Code Online (Sandbox Code Playgroud)
得到这样的:
有关使用RequestLogger的信息,请参阅文档中的以下注释:
"这个插件并不会记录每个人的要求.使用审核日志记录插件或使用自定义的中间件."
审核日志记录是一个特殊的插件,因为您不使用.use(),但使用after事件:
server.on('after', restify.auditLogger({
log: bunyan.createLogger({
name: 'audit',
stream: process.stdout
})
}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15223 次 |
| 最近记录: |