2015-09-28 4 views
5

मैं करना चाहते हैं की अनदेखी करने के लिए अच्छा एक एक विशिष्ट मार्ग के लिए प्रवेश करने के बाद से यह एक स्वास्थ्य जांच मार्ग अमेज़न द्वारा सर्वेक्षण में शामिल हो जाता है हर कुछ सेकंड है पर ध्यान न दें - यह सिर्फ हमारे लॉग करने के लिए शोर कहते हैं।कैसे HAPI अच्छा एक विशिष्ट मार्ग

वहाँ मार्ग विशिष्ट विन्यास मैं अच्छा प्लगइन के लिए सेट इतना है कि यह सिर्फ एक विशिष्ट मार्ग पर ध्यान नहीं देता कर सकते हैं?

उत्तर

0

मैं तुम्हें response लॉगिंग जो जहाँ तक मुझे पता है हूँ विन्यास नहीं है अनदेखी पर देख रहे हैं मान। अन्य लॉगिंग के लिए आप टैग के उपयोग के माध्यम से घटनाओं को फ़िल्टर कर सकते हैं।

निम्नलिखित:

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

निम्नलिखित उत्पादन उत्पन्न करता है:

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

good विकल्प इस प्रकार इस लेने जाएगा:

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

यह करने के लिए संभव है। यहाँ प्रलेखन https://github.com/hapijs/good/blob/master/API.md#stream-transforms-using-plugin-configs

Hapi मार्ग विन्यास

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

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

अच्छा के लिए कस्टम फ़िल्टर बना रहे है। आपको एक नया एनपीएम पैकेज बनाना होगा। इस उदाहरण के लिए, हम इसे नाम के लिए अच्छा फिल्टर वास्तुकला https://github.com/hapijs/good-squeeze/ मुख्य फ़ाइल (index.js) से जा रहे हैं का पालन करें शामिल हैं: जब अच्छा

'use strict'; 

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

इस पैकेज उपलब्ध होना चाहिए लोड हो रहा है। निम्नलिखित कोड filter.jsअच्छा फिल्टर पैकेज में में चला जाता है।

'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; 

अंत में, अच्छा विन्यास करने के लिए अपने फ़िल्टर जोड़ें।

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

यहाँ कुछ है कि hapi 16.1, good 7.1, और good-squeeze 5.0 के साथ कम से कम काम करता है। विचार स्वास्थ्य जांच मार्ग की लॉगिंग टैग करने के लिए, और फिर good-squeeze साथ उस मार्ग को बाहर है। अब तक

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

सर्वश्रेष्ठ उत्तर है, धन्यवाद:

का विन्यास good/good-squeeze बाहर करने के लिए "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', ], }, }, }); 

और फिर अपने मार्ग टैग करें! – victorkohl

संबंधित मुद्दे