【问题标题】:Accessing Hapi request id without passing the request object everywhere?在不到处传递请求对象的情况下访问 Hapi 请求 ID?
【发布时间】:2018-01-12 22:16:46
【问题描述】:

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

我想做的是编写一个简单的日志记录工具,这样我就可以在代码中的任何地方执行以下操作:

LoggingUtil.log('some message');

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

我对 Node 中的事件循环以及如何实现这一点并不十分熟悉。我发现唯一可行的是tick-id

【问题讨论】:

    标签: node.js hapijs


    【解决方案1】:

    我不确定您的确切意思,但我给出了 2 条建议,具体取决于您是要一直记录还是仅用于调试。

    1. 使用 Hapi 的生命周期方法记录所有时间的示例

      server.ext('onRequest', (request, reply) => {
      console.log(`\n++++++  ${request.raw.req.method} ${request.raw.req.url} ++++++\n`);
      reply.continue();
      });
      

    onRequest 表示每次有请求时,都会调用该函数。对于我的,我让它记录了请求方法和 URL。您可以观察请求对象以获取您想要的信息。

    1. 仅用于调试的日志记录

    基本相同的逻辑,传递请求对象并从那里访问您需要的信息。

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

    【讨论】:

      猜你喜欢
      • 2011-09-19
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 2017-02-13
      • 2015-03-18
      • 1970-01-01
      相关资源
      最近更新 更多