node.js - 有没有办法用restify在控制台中记录每个请求?

标签 node.js express restify

我是用restify来构建API的,我习惯express。有没有办法让 restify 在控制台中记录每个请求,就像 expressapp.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/

相关文章:

node.js - 当我的对象即将被 Node 中的 GC 收集时,我可以得到回调吗?

javascript - 解析 JSON 文件 - 子数组或方括号内的 node.js

mysql - 通过杂耍插入后从 MySQL 生成自动增量 ID?

javascript - 编译 ejs 时出现语法错误 : Unexpected token. ejs

node.js - 在 Elastic Beanstalk 上运行时如何获取服务器 URL?

javascript - Node JS res.sendFile 不发送图像或目录

javascript - 如何使indexOf仅匹配 'hi'作为匹配而不匹配 'hirandomstuffhere'?

node.js - 如何使用重定向的 url 作为 <img>、<audio> 或 <video> 的源?

node.js - 重新调整可选路由参数

node.js - 当我的代码中有错误时,如何从 Restify 获取堆栈跟踪?