2015-09-28 12 views
5

Chciałbym mieć dobre ignorowanie rejestrowania dla konkretnej trasy, ponieważ jest to trasa sprawdzania stanu zdrowia, która jest ankietowana przez Amazon co kilka sekund - po prostu dodaje hałasu do naszych dzienników.jak zrobić hapi dobry zignorować konkretną trasę

Czy istnieje konfiguracja specyficzna dla trasy, którą można ustawić dla dobrej wtyczki, tak aby ignorowała pojedynczą określoną trasę?

Odpowiedz

0

Zakładam, że patrzysz na ignorowanie rejestrowania, którego nie można skonfigurować, o ile wiem. W przypadku innych rejestrów możesz filtrować zdarzenia za pomocą tagów.

Poniższy:

var someData = {foo:'bar'}; 
    request.log('myTag', someData); 

generuje następujący wynik:

150928/224019.555, [request,myTag], data: {"foo":"bar"} 

Poniższy good opcji byłoby to odebrać:

var loggingOpts = { 
    reporters: [{ 
    reporter: require('good-console'), 
    events: { request: 'myTag' } 
    }] 
}; 
2

Jest to możliwe do zrobienia. Oto konfiguracja

var routeConfig = { 
    plugins: { 
     good: { 
      suppressResponseEvent: true 
     } 
    } 
}; 

server.route({ 
    method: '*', 
    path: '/suscribe/{path*}', 
    handler: function(req, rep){ 
      rep("OK!"); 
    }, 
    config: routeConfig 
}); 

Tworzenie filtru niestandardowego dla dobrej dokumentacja https://github.com/hapijs/good/blob/master/API.md#stream-transforms-using-plugin-configs

Hapi trasy. Będziesz musiał utworzyć nowy pakiet npm. W tym przykładzie mamy zamiar nazwać dobry filtr Śledź architekturę z https://github.com/hapijs/good-squeeze/ Główny plik (index.js) zawiera:

'use strict'; 

module.exports = { 
    Filter: require("./filter.js") 
}; 

Pakiet ten musi być dostępny podczas dobry ładuje się. Poniższy kod przechodzi w filter.js w dobrym filtrem opakowaniu.

'use strict'; 

const Stream = require('stream'); 

class Filter extends Stream.Transform { 
    constructor(options) { 
     options = Object.assign({}, options, { 
      objectMode: true 
     }); 
     super(options); 
    } 
    _transform(data, enc, next) { 

     if (data.event === 'response' && data.config.suppressResponseEvent === true) { 

      return next(); 
     } 

     return next(null, data); 
    } 
} 

module.exports = Filter; 

Wreszcie dodać filtr do dobrej konfiguracji.

const options = { 
    ops: { 
     interval: 1000 
    }, 
    reporters: { 
     myConsoleReporter: [{ 
      module: 'good-squeeze', 
      name: 'Squeeze', 
      args: [{ log: '*', response: '*' }] 
     }, 
     { 
      module: 'good-filter', 
      name: 'Filter', 
      args: [{ log: '*', response: '*' }] 
     }, 
     { 
      module: 'good-console' 
     }, 'stdout'] 
    } 
}; 
1

Oto coś, co działa przynajmniej hapi 16,1, good 7.1 i good-squeeze 5.0. Chodzi o to, aby oznaczyć rejestrowanie trasa kontroli zdrowia, a następnie wykluczyć tę trasę z good-squeeze.

Konfiguracja good/good-squeeze wykluczyć „health”:

server.register({ 
    register: Good, 
    options: { 
    reporters: { 
     console: [ 
     { 
      module: 'good-squeeze', 
      name: 'Squeeze', 
      args: [ 
      { 
       // keep health checks from appearing in logs 
       response: { exclude: 'health' }, 
       log: '*', 
      }, 
      ], 
     }, 
     { 
      module: 'good-console', 
     }, 
     'stdout', 
     ], 
    }, 
    }, 
}); 

A następnie oznakować trasy:

server.route({ 
    method: 'GET', 
    path: '/admin/ok', 
    handler: (request, reply) => reply('ok'), 
    config: { 
    tags: ['health'], 
    }, 
}); 
+0

Najlepsza odpowiedź do tej pory, dzięki! – victorkohl

Powiązane problemy