访问Hapi请求ID而不在任何地方传递请求对象?

时间:2017-08-04 21:41:39

标签: node.js hapijs

我有一个用Node.js / Hapi编写的REST API,我正在努力为它添加日志记录并将其集成到像Splunk这样的集中式日志服务中。

我希望能够做的是编写一个简单的日志工具,这样代码中的任何地方都可以执行以下操作:

LoggingUtil.log('some message');

并且LoggingUtil将能够确定它所属的请求,并将其包含在记录的实际消息中。这样,当我搜索日志时,请求ID将把与特定请求相关的所有日志绑定在一起。

我不太熟悉Node中的事件循环以及如何实现这一点。我发现可能有用的唯一事情是tick-id

1 个答案:

答案 0 :(得分:-1)

我不确定你的意思,但我根据你是想要一直记录还是只是为了调试来提出2条建议。

  1. 使用Hapi的生命周期方法

    记录所有时间示例
    server.ext('onRequest', (request, reply) => {
    console.log(`\n++++++  ${request.raw.req.method} ${request.raw.req.url} ++++++\n`);
    reply.continue();
    });
    
  2. onRequest表示每次有请求时,都会调用此函数。对于我,我让它记录了请求方法和URL。你可以观察请求对象以获得你想要的信息。

    1. 仅记录调试
    2. 基本相同的逻辑,传递请求对象并从那里访问您需要的信息。

      在你的日志功能中:     log(request) { console.log(WHATEVER_YOU_NEED) }