How to log all requests made to a hapi server without using a logging library? How to log all requests made to a hapi server without using a logging library? javascript javascript

How to log all requests made to a hapi server without using a logging library?


So I found a way:

server.events.on('response', function (request) {    console.log(request.info.remoteAddress + ': ' + request.method.toUpperCase() + ' ' + request.path + ' --> ' + request.response.statusCode);});

The log then looks like this:

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

Answer edited for Hapi v18, see older versions here


In Hapi.js version above v17, please make the below changes to make it work:

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);});

The log will be:

127.0.0.1: GET /todo --> 200


The easiest would be to use the good module with one of the good reporters, for example good-file. Here is an example how to use it:

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);    });});