我是用restify
来构建API的,我习惯express
。有没有办法让 restify
在控制台中记录每个请求,就像 express
对 app.use(express.logger('dev'))
?
最佳答案
这是一个非常简单的 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);
});
关键是 server.pre()
调用。
在一个终端窗口中启动它并在另一个终端窗口中执行 curl 请求。您将看到它有效的响应,以及请求的日志条目。
假设一些事情:
- 你有一个 package.json 文件,它将安装 bunyan 和 restify
- 您将上面的代码放在一个名为
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}
终端窗口 2
$ curl localhost:8080/
"It worked!"
如果有人想查看我的 package.json
,我可以将所有这些放在一个要点中。
关于node.js - 有没有办法用restify在控制台中记录每个请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20626470/