如何为 server.ext('onRequest', ...) 中的所有 Hapi 日志添加标签

How to add a tag to all Hapi logs in server.ext('onRequest', ...)

这个问题显然有一个假设,即这必须发生在 server.ext('onRequest', ...) - 事实并非如此,因此可能发生在其他地方。

我的具体用例是负载测试器正在调用我的服务。该负载测试器提供了一个特定的 HTTP header 允许我识别它。当此 header 存在时,我想向所有日志添加特定标签。

虽然请求 object 或请求 object 中的日志 属性 中会有一些东西,但我可以向其附加一个标签应用于该请求的所有日志。找不到任何东西。

Hapi版本:@hapi/hapi18.3.2

要将我放入 hapihour 的内容放在这里:

您可以根据请求覆盖服务器扩展中的 hapi 内部日志功能,以强制它使用以下代码添加您的自定义标签:

    server.ext({
        type: 'onRequest',
        method: function (request, h) {

            const oldLogFxn = request._log;
            const newLogFxn = (tags, data, channel) => oldLogFxn(['CUSTOM_TAG', ...tags], data, channel);
            request._log = newLogFxn.bind(request);
        }
    });