120 votes

enregistrer toutes les requêtes que la mangouste effectue dans l'application

J'ai une application utilisant nodejs et mongodb. J'ai utilisé mongoose pour ODM. Maintenant, je veux enregistrer toutes les requêtes que mongoose lance pendant toute l'application.

Comment les enregistrer ?

258voto

nfreeze Points 2203

Vous pouvez activer le mode débogage comme suit :

mongoose.set('debug', true);

ou ajoutez votre propre rappel de débogage :

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

Cela permettra de consigner toutes les méthodes de collecte exécutées et leurs arguments dans la console.

22voto

Vithal Reddy Points 164

Vous pouvez utiliser le format suivant :

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

ou tout autre enregistreur de votre choix :

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

12voto

lesterzone Points 173

J'utilise node bunyan, c'est une option pour déboguer et suivre les requêtes (peut aider quelqu'un d'autre).

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

4voto

Zilvinas Points 688

Vous pouvez également définir les paramètres du journal de débogage :

node index.js DEBUG=mquery

mais cela n'enregistrera que demandes de renseignements et non les instructions d'insertion ou de mise à jour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X