Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不使用日志库的情况下记录向hapi服务器发出的所有请求?_Javascript_Logging_Hapijs - Fatal编程技术网

Javascript 如何在不使用日志库的情况下记录向hapi服务器发出的所有请求?

Javascript 如何在不使用日志库的情况下记录向hapi服务器发出的所有请求?,javascript,logging,hapijs,Javascript,Logging,Hapijs,我希望看到一个很好的日志,其中包含关于每个服务器请求的简短信息,以便在开发过程中使用。我已经看过了上的文档,但我对它的理解不够,无法让它正常工作 当我创建服务器时,应该传递什么作为config对象?然后我应该听事件并记录它们,还是它会自动发生?如何记录所有请求,而不仅仅是错误 我希望避免安装日志库。例如,最简单的方法是将该模块与一个good报告器一起使用。下面是一个如何使用它的示例: var Hapi = require('hapi'); var Good = require('good');

我希望看到一个很好的日志,其中包含关于每个服务器请求的简短信息,以便在开发过程中使用。我已经看过了上的文档,但我对它的理解不够,无法让它正常工作

当我创建服务器时,应该传递什么作为
config
对象?然后我应该听事件并记录它们,还是它会自动发生?如何记录所有请求,而不仅仅是错误


我希望避免安装日志库。

例如,最简单的方法是将该模块与一个
good
报告器一起使用。下面是一个如何使用它的示例:

var Hapi = require('hapi');
var Good = require('good');

var server = new Hapi.Server();
server.connection({ port: 8080 });

server.route({
    method: 'GET',
    path: '/',
    handler: function (request, reply) {

        reply('Hello, world!');
    }
});

server.route({
    method: 'GET',
    path: '/{name}',
    handler: function (request, reply) {

        reply('Hello, ' + encodeURIComponent(request.params.name) + '!');
    }
});

server.register({
    register: Good,
    options: {
        reporters: [{
            reporter: require('good-file'),
            events: {
                response: '*',
                log: '*'
            },
            config: {
                path: '/var/log/hapi',
                rotate: 'daily'
            }
        }]
    }
}, function (err) {

    if (err) {
        throw err; // something bad happened loading the plugin
    }

    server.start(function () {

        server.log('info', 'Server running at: ' + server.info.uri);
    });
});
所以我找到了一个方法:

server.events.on('response', function (request) {
    console.log(request.info.remoteAddress + ': ' + request.method.toUpperCase() + ' ' + request.path + ' --> ' + request.response.statusCode);
});
然后,日志如下所示:

127.0.0.1: GET /myEndpoint/1324134?foo=bar --> 200
127.0.0.1: GET /sgsdfgsdrh --> 404

答案为Hapi v18编辑,

在v17以上的Hapi.js版本中,请进行以下更改以使其正常工作:

server.events.on('response', function (request) {
    // you can use request.log or server.log it's depends
    server.log(request.info.remoteAddress + ': ' + request.method.toUpperCase() + ' ' + request.url.path + ' --> ' + request.response.statusCode);
});
日志将是:

127.0.0.1: GET /todo --> 200

您是否尝试使用中建议的Good或Bucker之类的插件?我已经看到了这一点,但除非确实有必要,否则我宁愿不引入新的库。我想要一个简单明了的所有请求日志,就像大多数库默认做的那样。Hapi真的需要插件吗?Good不推荐使用。注意:由于缺少可用的支持资源,该模块将于2020年12月31日被弃用。请考虑使用另一个日志插件。“我不想为项目添加另一个库,只是为了简单地记录所有请求。请注意,您也可以接受。首先,因为你不必担心插件版本的不兼容性。Good是不推荐的。注:由于缺少可用的支持资源,该模块将于2020年12月31日被弃用。请考虑使用另一个日志插件。“您应该使用或其他插件。NO-NO-NO。我已经在这个问题中写道,我不想日志库。我在对其他答案的评论中重复了这一点。我只是需要一个简单的日志记录供开发人员使用
good
可能是您问题的答案,但它不是我问的问题的答案。
request.response.source
获取hapi v17的响应主体,它是
server.events.on()
而不是“server.on()”,在hapi v18中,使用
request.url.pathname
request.path