Tôi có ứng dụng sử dụng nodejs và mongodb. Tôi đã sử dụng mongoose cho ODM. Bây giờ tôi muốn ghi lại tất cả các truy vấn mongoose kích hoạt trong toàn bộ ứng dụng.
Làm thế nào để ghi lại những thứ này?
Tôi có ứng dụng sử dụng nodejs và mongodb. Tôi đã sử dụng mongoose cho ODM. Bây giờ tôi muốn ghi lại tất cả các truy vấn mongoose kích hoạt trong toàn bộ ứng dụng.
Làm thế nào để ghi lại những thứ này?
Câu trả lời:
Bạn có thể bật chế độ gỡ lỗi như sau:
mongoose.set('debug', true);
hoặc thêm lệnh gọi lại gỡ lỗi của riêng bạn:
mongoose.set('debug', function (coll, method, query, doc [, options]) {
//do your thing
});
Điều này sẽ ghi lại tất cả các phương thức thu thập được thực thi và các đối số của chúng vào bảng điều khiển.
Tôi đang sử dụng node bunyan, đây là một tùy chọn để gỡ lỗi và theo dõi các truy vấn (có thể giúp ích cho người khác)
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
});
});
Bạn có thể sử dụng định dạng sau:
mongoose.set("debug", (collectionName, method, query, doc) => {
console.log(`${collectionName}.${method}`, JSON.stringify(query), doc);
});
hoặc bất kỳ trình ghi nhật ký nào khác mà bạn chọn:
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%')} `);