реєструвати всі запити, які запускають мангустську програму


87

У мене є додаток, що використовує nodejs і mongodb. Я використовував мангуста для ODM. Тепер я хочу реєструвати всі запити, які запускають мангуст протягом усієї програми.

Як їх реєструвати?

Відповіді:


198

Ви можете ввімкнути режим налагодження так:

mongoose.set('debug', true);

або додайте власний зворотний виклик налагодження:

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

Це буде реєструвати всі виконані методи збору та їх аргументи на консолі.


3
як мангуст форматує журнал - -. Тобто я хотів би використати другий варіант, щоб дозволити Вінстону входити. Мені подобається форматувати журнали мангустів, і я б так само форматував свій журнал з Вінстоном.
загублений переклад

12

Я використовую node bunyan, це можливість налагодження та відстеження запитів (може допомогти комусь іншому)

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
Приємно. Але як додати колір лише до такого значення, як налагодження мангуста за замовчуванням
coinhndp

ви можете використовувати крейдяний модуль npm для забарвлення, будь-які значення, які ви хочете log(` CPU: ${chalk.red('90%')} RAM: ${chalk.green('40%')} DISK: ${chalk.yellow('70%')} `);
забарвити

3

Ви також можете встановити параметри реєстратора налагодження:

node index.js DEBUG=mquery

але це буде лише реєструвати запити , а не вставляти або оновлювати оператори.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.