Ich habe eine Anwendung mit NodeJS und Mongodb. Ich habe Mungo für ODM verwendet. Jetzt möchte ich alle Abfragen protokollieren, die während der gesamten Anwendung Mungo auslösen.
Wie protokolliere ich diese?
Ich habe eine Anwendung mit NodeJS und Mongodb. Ich habe Mungo für ODM verwendet. Jetzt möchte ich alle Abfragen protokollieren, die während der gesamten Anwendung Mungo auslösen.
Wie protokolliere ich diese?
Antworten:
Sie können den Debug-Modus folgendermaßen aktivieren:
mongoose.set('debug', true);
oder fügen Sie Ihren eigenen Debug-Rückruf hinzu:
mongoose.set('debug', function (coll, method, query, doc [, options]) {
//do your thing
});
Dadurch werden alle ausgeführten Erfassungsmethoden und ihre Argumente in der Konsole protokolliert.
Ich verwende Node Bunyan. Dies ist eine Option zum Debuggen und Verfolgen von Abfragen (kann jemand anderem helfen.)
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
});
});
Sie können das folgende Format verwenden:
mongoose.set("debug", (collectionName, method, query, doc) => {
console.log(`${collectionName}.${method}`, JSON.stringify(query), doc);
});
oder ein anderer Logger Ihrer Wahl:
mongoose.set("debug", (collectionName, method, query, doc) => {
logger(`${collectionName}.${method}`, JSON.stringify(query), doc);
});
log(` CPU: ${chalk.red('90%')} RAM: ${chalk.green('40%')} DISK: ${chalk.yellow('70%')} `);