web-dev-qa-db-ja.com

ロギングライブラリを使用せずに、hapiサーバーに対して行われたすべてのリクエストをログに記録する方法は?

開発中に使用するために、サーバーへの各リクエストに関する短い情報を含む素敵なログを見たいのですが。 http://hapijs.com/api#request-logs のドキュメントを確認しましたが、動作させるための十分な知識がありませんでした。

サーバーを作成するときに、configオブジェクトとして何を渡すべきですか?次に、イベントを聞いてログに記録する必要がありますか、それとも自動的に発生しますか?エラーだけでなく、すべてのリクエストをログに記録するにはどうすればよいですか?

ロギングライブラリのインストールを避けたいのですが。

17
mik01aj

だから私は方法を見つけました:

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用に編集された回答 こちらの古いバージョンを参照

37
mik01aj

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
10
Vipin

最も簡単なのは good モジュールをgoodレポーターの1つで使用することです。たとえば 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);
    });
});
9
Gergo Erdosi