uygulamada firavun faresi ateşleyen tüm sorguları günlüğe kaydet


89

Nodejs ve mongodb kullanan uygulamam var. ODM için firavun faresi kullandım. Şimdi tüm uygulama boyunca firavun faresi yanan tüm sorguları günlüğe kaydetmek istiyorum.

Bunlar nasıl kaydedilir?

Yanıtlar:


200

Hata ayıklama modunu şu şekilde etkinleştirebilirsiniz:

mongoose.set('debug', true);

veya kendi hata ayıklama geri çağrınızı ekleyin:

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

Bu, yürütülen tüm toplama yöntemlerini ve bunların argümanlarını konsola günlüğe kaydedecektir.


3
firavun faresi günlüğü nasıl biçimlendiriyor? IE Winston'ın günlüğe kaydetmesine izin vermek için ikinci seçeneği kullanmak istiyorum. Firavun faresi günlüklerinin biçimini seviyorum ve günlüğümü winston ile aynı şekilde biçimlendirirdim.
lostintranslation

12

Bunyan düğümü kullanıyorum, bu sorgularda hata ayıklama ve izleme seçeneği (başka birine yardımcı olabilir)

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
    });
});

Dosya adını ve satır numarasını sorgunun yürütüldüğü yerden kaydetmem gerekiyor. Bunu yapabileceğim bir şey var mı?
Shruti Goyal

12

Aşağıdaki biçimi kullanabilirsiniz:

mongoose.set("debug", (collectionName, method, query, doc) => {
    console.log(`${collectionName}.${method}`, JSON.stringify(query), doc);
});

veya seçtiğiniz herhangi bir kaydedici:

mongoose.set("debug", (collectionName, method, query, doc) => {
    logger(`${collectionName}.${method}`, JSON.stringify(query), doc);
});

1
Güzel. Ancak sadece firavun faresi hata ayıklama varsayılanı gibi bir değere nasıl renk eklenir
coinhndp

Renklendirmek istediğiniz değerler ne olursa olsun, tebeşir npm modülünü kullanabilirsinizlog(` CPU: ${chalk.red('90%')} RAM: ${chalk.green('40%')} DISK: ${chalk.yellow('70%')} `);
Vithal Reddy

3

Ayrıca hata ayıklama günlüğü parametrelerini de ayarlayabilirsiniz:

node index.js DEBUG=mquery

ancak bu yalnızca sorguları günlüğe kaydeder , ifadeleri ekleme veya güncelleme.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.