Nodejs ログとトレースの接続

Nodejs ログとトレースの接続

自動挿入

環境変数 DD_LOGS_INJECTION=true か、直接トレーサーを構成することで挿入を有効にします:

const tracer = require('dd-trace').init({
    logInjection: true
});

これにより、bunyanpaperplanepinowinston の自動トレース ID 挿入が有効になります。

まだの場合は、NodeJS トレーサーを DD_ENVDD_SERVICEDD_VERSION で構成します。これは、 envserviceversion を追加する際のベストプラクティスです (詳細は、統合サービスタグ付けを参照)。

: 自動挿入が機能するのは JSON 形式のログのみです。

手動挿入

自動挿入に対応していないロギングライブラリを使っているが、JSON 形式を使っている場合は、コード内で直接手動挿入を実行することができます。

console を基底のロガーとして使う例:

const tracer = require('dd-trace');
const formats = require('dd-trace/ext/formats');

class Logger {
    log(level, message) {
        const span = tracer.scope().active();
        const time = new Date().toISOString();
        const record = { time, level, message };

        if (span) {
            tracer.inject(span.context(), formats.LOG, record);
        }

        console.log(JSON.stringify(record));
    }
}

module.exports = Logger;

その他の参考資料