- はじめに
- エージェント
- インテグレーション
- Watchdog
- イベント
- ダッシュボード
- モバイルアプリケーション
- インフラストラクチャー
- サーバーレス
- メトリクス
- ノートブック
- アラート設定
- APM & Continuous Profiler
- CI Visibility
- RUM & セッションリプレイ
- データベース モニタリング
- ログ管理
- セキュリティプラットフォーム
- Synthetic モニタリング
- ネットワークモニタリング
- 開発者
- API
- アカウントの管理
- データセキュリティ
- ヘルプ
PHP にロギングを実装するさまざまな方法があり、PHP の組み込みエラーロギング API が完全に回避されている場合、Datadog PHP トレースライブラリは、トレースとスパン ID をログに自動的に挿入できることが確実ではありません。 PHP ログとトレースを手動で接続する方法については、以下のセクションをご覧ください。
\DDTrace\current_context()
は、バージョン 0.61.0 で導入されています。ログとトレースを一緒に接続するには、ログに、それぞれトレース ID とスパン ID を含む dd.trace_id
属性と dd.span_id
属性が含まれている必要があります。
Datadog ログインテグレーションを使ってログをパースしていない場合は、カスタムログパースルールによって dd.trace_id
と dd.span_id
が文字列としてパースされ、トレースリマッパーのおかげで再マップされていることを確実にする必要があります。詳細については、FAQ トレース ID パネルに相関ログが表示されないのはなぜですか?を参照してください。
たとえば、次でこの 2 つの属性をログに追加します。
<?php
$context = \DDTrace\current_context();
$append = sprintf(
' [dd.trace_id=%d dd.span_id=%d]',
$context['trace_id'],
$context['span_id']
);
my_error_logger('Error message.' . $append);
?>
ロガーが monolog/monolog ライブラリを実装する場合、Logger::pushProcessor()
を使ってすべてのログメッセージに識別子を自動的に付加します:
<?php
$logger->pushProcessor(function ($record) {
$context = \DDTrace\current_context();
$record['message'] .= sprintf(
' [dd.trace_id=%d dd.span_id=%d]',
$context['trace_id'],
$context['span_id']
);
return $record;
});
?>
アプリケーションで、ログメッセージに trace_id および span_id を付加するのではなく json ログフォーマットを使用している場合は、以下の ID を含む一時レベルキー “dd” を追加できます。
<?php
$context = \DDTrace\current_context();
$logger->pushProcessor(function ($record) {
$record['dd'] = [
'trace_id' => $context['trace_id'],
'span_id' => $context['span_id'],
];
return $record;
});
?>