2015-04-20 9 views
11

Chciałbym zobaczyć ładny dziennik z krótkimi informacjami o każdym żądaniu na mój serwer, do wykorzystania podczas rozwoju. Widziałem dokumentację na http://hapijs.com/api#request-logs, ale nie mogłem tego zrozumieć, żeby to działało.Jak rejestrować wszystkie żądania wysłane do serwera hapi bez korzystania z biblioteki rejestrowania?

Co powinienem podać jako obiekt config podczas tworzenia serwera? Czy powinienem słuchać zdarzeń i logować je, czy dzieje się to automatycznie? Jak rejestrować wszystkie żądania, a nie tylko błędy?

Chciałbym uniknąć instalowania bibliotek rejestrowania.

+0

pan spróbuje użyć wtyczki jak dobre lub Bücker jak zaproponowano w [http://hapijs.com/tutorials/logging](http://hapijs.com/tutorials/ wycięcie lasu)? – mucio

+0

Widziałem to, ale wolałbym nie wprowadzać nowej biblioteki, chyba że jest to naprawdę konieczne. Chcę mieć prosty i prosty dziennik wszystkich żądań, tak jak większość bibliotek domyślnie. Czy Hapi naprawdę wymaga wtyczki do tego? – mik01aj

Odpowiedz

27

Więc znalazłem sposób:

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

Dziennik wówczas wygląda następująco:

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

Powinieneś użyć wtyczki ['Good'] (https://github.com/hapijs/good) lub innej wtyczki [logging] (http://hapijs.com/tutorials/logging). – paulodiovani

+7

Nie, nie, nie. Pisałem już w pytaniu, że nie chcę rejestrować bibliotek. Powtórzyłem to w komentarzach do innej odpowiedzi. Potrzebowałem tylko * prostego * logowania do użytku deweloperów. "dobry" może być odpowiedzią na * twoje * pytanie, ale nie jest to odpowiedź na * moje * pytanie, gdy je zadałem. – mik01aj

+0

, ale co z treścią odpowiedzi? wszystkie hapijs jest rak ... –

7

Najprostszym rozwiązaniem byłoby użycie modułu good z jednym z reporterów good, na przykład good-file. Oto przykład, jak go używać:

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

Wolałbym nie dodawać kolejnej biblioteki do projektu tylko po prosty dziennik wszystkich żądań. – mik01aj

+1

Należy pamiętać, że również [nie można dostosować formatu wyjściowego z dobrym] (https://github.com/hapijs/good-file/issues/66). – mik01aj

+0

Przyjęta odpowiedź jest * łatwiejsza * niż ta, ponieważ jedna, ponieważ nie musisz się martwić o niezgodność wersji wtyczki. – nobar

4

w wersji Hapi.js powyżej V17 , proszę wprowadzić poniższe zmiany, aby działało:

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

Rejestr będzie:

127.0.0.1: GET /todo --> 200 
Powiązane problemy