如何在不使用日志库的情况下记录对 hapi 服务器发出的所有请求?
How to log all requests made to a hapi server without using a logging library?
我希望看到一个不错的日志,其中包含关于对我的服务器的每个请求的简短信息,以供在开发期间使用。我看过 http://hapijs.com/api#request-logs 上的文档,但我对它的理解还不够,无法让它正常工作。
创建服务器时,我应该将什么作为 config
对象传递?然后我应该听取事件并记录它们还是自动发生?如何记录所有请求,而不仅仅是错误?
我想避免安装日志库。
最简单的方法是使用 good
module with one of the good
reporters, for example good-file
。这是一个如何使用它的例子:
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 编辑的答案,see older versions here
在 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
我希望看到一个不错的日志,其中包含关于对我的服务器的每个请求的简短信息,以供在开发期间使用。我看过 http://hapijs.com/api#request-logs 上的文档,但我对它的理解还不够,无法让它正常工作。
创建服务器时,我应该将什么作为 config
对象传递?然后我应该听取事件并记录它们还是自动发生?如何记录所有请求,而不仅仅是错误?
我想避免安装日志库。
最简单的方法是使用 good
module with one of the good
reporters, for example good-file
。这是一个如何使用它的例子:
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 编辑的答案,see older versions here
在 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