регистрировать все запросы, которые запускают мангусты, в приложении

87

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

Как их регистрировать?

codeofnode
источник

Ответы:

198

Вы можете включить режим отладки следующим образом:

mongoose.set('debug', true);

или добавьте свой собственный обратный вызов отладки:

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

Это будет регистрировать все выполненные методы сбора и их аргументы в консоли.

мистер заморозить
источник
3
как мангуст форматирует журнал. IE Я хотел бы использовать второй вариант, чтобы Winston журнал. Мне нравится формат журналов мангуста, и я бы отформатировал свой журнал таким же образом.
lostintranslation
12

Я использую узел 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
Ницца. Но как добавить цвет только к значению, например, к отладке mongoose по умолчанию
coinhndp
вы можете использовать модуль chalk npm для раскрашивания log(` CPU: ${chalk.red('90%')} RAM: ${chalk.green('40%')} DISK: ${chalk.yellow('70%')} `);
Витал Редди
3

Вы также можете установить параметры журнала отладки:

node index.js DEBUG=mquery

но при этом будут регистрироваться только запросы , а не операторы вставки или обновления.

Жильвинас
источник