एप्लिकेशन में आग लगाने वाले सभी प्रश्नों को लॉग करें


86

मैं नोडज और मोंगोडब का उपयोग करके आवेदन करता हूं। मैंने ODM के लिए मैंगोज़ का इस्तेमाल किया है। अब मैं उन सभी प्रश्नों को लॉग इन करना चाहता हूं जो पूरे आवेदन के दौरान आग लगाते हैं।

ये कैसे लॉग इन करें?

जवाबों:


197

आप डिबग मोड को इस तरह से सक्षम कर सकते हैं:

mongoose.set('debug', true);

या अपना स्वयं का डीबग कॉलबैक जोड़ें:

mongoose.set('debug', function (coll, method, query, doc [, options]) {
 //do your thing
});

यह सभी निष्पादित संग्रह विधियों और उनके तर्कों को कंसोल पर लॉग करेगा।


3
कैसे लॉग को प्रारूपित करता है। IE मैं विंस्टन लॉग इन करने के लिए दूसरे विकल्प का उपयोग करना चाहूंगा। मुझे प्रारूप मानदंड लॉग पसंद हैं और मैं उसी तरह अपना लॉग डब्ल्यू / विनस्टन प्रारूपित करूंगा।
दोपहर

12

मैं नोड बनियान का उपयोग कर रहा हूं, यह डिबग और ट्रैक प्रश्नों का विकल्प है (किसी और की मदद कर सकता है)

function serializer(data) {
    let query = JSON.stringify(data.query);
    let options = JSON.stringify(data.options || {});

    return `db.${data.coll}.${data.method}(${query}, ${options});`;
}

let log = bunyan.createLogger({
    name: 'AppName',
    src: false,
    serializers: {
        // ...
        dbQuery: querySerializer
        // ...
    },
    // ...
});

mongoose.set('debug', function(coll, method, query, doc, options) {
    let set = {
        coll: coll,
        method: method,
        query: query,
        doc: doc,
        options: options
    };

    log.info({
        dbQuery: set
    });
});

मुझे फ़ाइल नाम और लाइन नंबर लॉग करने की आवश्यकता है जहां से क्वेरी निष्पादित की गई है। वैसे भी क्या मैं ऐसा कर सकता हूँ?
श्रुति गोयल

10

आप निम्न प्रारूप का उपयोग कर सकते हैं:

mongoose.set("debug", (collectionName, method, query, doc) => {
    console.log(`${collectionName}.${method}`, JSON.stringify(query), doc);
});

या अपनी पसंद का कोई अन्य लकड़हारा:

mongoose.set("debug", (collectionName, method, query, doc) => {
    logger(`${collectionName}.${method}`, JSON.stringify(query), doc);
});

1
अच्छा लगा। लेकिन केवल
मूंग

आप रंग के लिए चॉक एनपीएम मॉड्यूल का उपयोग कर सकते हैं, जो भी मूल्य आप रंगना चाहते हैंlog(` CPU: ${chalk.red('90%')} RAM: ${chalk.green('40%')} DISK: ${chalk.yellow('70%')} `);
विट्ठल रेड्डी

3

आप डिबग लकड़हारा पैरामीटर भी सेट कर सकते हैं:

node index.js DEBUG=mquery

लेकिन यह केवल प्रवेश करेंगे प्रश्नों , डालने या अद्यतन बयान नहीं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.