nodejs와 mongodb를 사용하는 응용 프로그램이 있습니다. ODM에 몽구스를 사용했습니다. 이제 전체 응용 프로그램에서 mongoose가 실행하는 모든 쿼리를 기록하고 싶습니다.
기록하는 방법?
답변:
다음과 같이 디버그 모드를 활성화 할 수 있습니다.
mongoose.set('debug', true);
또는 자신의 디버그 콜백을 추가하십시오.
mongoose.set('debug', function (coll, method, query, doc [, options]) {
//do your thing
});
실행 된 모든 수집 방법과 인수를 콘솔에 기록합니다.
나는 노드 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
});
});
다음 형식을 사용할 수 있습니다.
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);
});
log(` CPU: ${chalk.red('90%')} RAM: ${chalk.green('40%')} DISK: ${chalk.yellow('70%')} `);