# Dgraphのリクエスト・ログおよびstdout/sterrログ

Dgraphノードでは、2つのログを作成します。

これらのDgraphログを使用して、問合せをトラブルシューティングしたり、特定の問合せや更新のパフォーマンスを追跡できます。Dgraphログはテキスト・ファイルです。

## Dgraphリクエスト・ログ

Dgraphリクエスト・ログ(問合せログとも呼ばれる)には、処理された各リクエストの1エントリが含まれています。リクエストは、タイムスタンプでソートされます。

リクエスト・ログの名前および格納場所は、Dgraphの`--log`フラグで指定されます。デフォルトでは、ログ・ファイルの名前および場所は、次のように設定されます。

    $BDD_HOME/dgraph/bin/dgraph.reqlog

Dgraphリクエスト・ログの形式は14個のフィールドで構成されており、次の情報が含まれています。

- フィールド1: タイムスタンプ(ミリ秒単位のUNIX時間)。
- フィールド2: クライアントIPアドレス。
- フィールド3: 外部トランザクションID (定義されている場合)。
- フィールド4: リクエストID。
- フィールド5: レスポンス・サイズ(バイト)。
- フィールド6: 合計時間(小数ミリ秒)。
- フィールド7: 処理時間(小数ミリ秒)。
- フィールド8: HTTPレスポンス・コード(クライアント切断時に0)。
- フィールド9: - (未使用)。
- フィールド10: キュー・ステータス。リクエスト到着時の、キュー内のリクエストの数(正の値の場合)、または同じ優先度で使用可能なスロットの数(負の値の場合)。
- フィールド11: スレッドID。
- フィールド12: HTTP URL (エンコードされたURL)。
- フィールド13: HTTP POST本体(エンコードされたURL。デフォルトで64KBに切捨て。 - 空の場合)。
- フィールド14: HTTPヘッダー(エンコードされたURL)。

情報が使用できないか該当しないフィールドには、ダッシュ(-)が入力されます。

Dgraphでは、デフォルトで、POSTリクエストの本体のコンテンツを64KBで切り捨てます。特にデータ・ドメインに多数のレコードを追加するプロセス中は、このデフォルト設定により、ログのディスク領域が節約されます。POSTリクエスト本体の完全なコンテンツのログを確認する必要がある場合は、Oracleサポートに連絡してください。

## Dgraph stdout/stderrログ

Dgraphでは、Dgraphの`--out`フラグで指定されたログ・ファイルに、stdout/stderr出力をリダイレクトします。デフォルトでは、ファイルの名前および場所は、次のようになります。

    $BDD_HOME/logs/dgraph.out

bdd.confファイルの`DGRAPH_OUT_FILE`パラメータを変更してからDgraphを再起動すると、新しいログの場所を指定できます。

Dgraphのstdout/stderrログには、起動メッセージ、警告メッセージおよびエラー・メッセージが含まれています。Dgraphの`-v`フラグによって、ログの冗長度を増やすことができます。ロギング変数を設定して、指定した機能のロギングの冗長度を切り替えることもできます。これについては、「Dgraphターゲットの冗長なロギングの構成」で説明しています。

Dgraphのstdout/stderrログでは、システムのローカル・タイムゾーンを使用してゾーン・ラベルを表示せずに起動時間と停止時間(および他の情報メッセージ)をレポートしますが、警告メッセージとエラー・メッセージはUTCで表示します。

## Dgraphリクエスト・ログでのgrepの使用

パフォーマンスの問題を診断する際に、`grep`を固有の文字列とともに使用して、Dgraphリクエスト・ログの個々のリクエストを検索できます。たとえば、次の文字列を使用できます。

    value%3D%22RefreshDate

Studioがある場合、リクエストを送信するポートレットの`X-Endeca-Portlet-Id HTTPヘッダー`を検索し、それに対してgrepを行うと便利です。これは次のようになります。

    X-Endeca-Portlet-Id: endecaresultslistportlet_WAR_endecaresultslistportlet_INSTANCE_5RKp_LAYOUT_11601

例として、次のように設定した場合、

    PORTLET=endecaresultslistportlet_WAR_endecaresultslistportlet_INSTANCE_5RKp_LAYOUT_11601

次のようなコマンドを使用して、ポートレットから最後の10個のリクエストの時間およびレスポンス・コードを確認できます。

    grep $PORTLET Discovery.reqlog | tail -10 | cut -d ' ' -f 6,7,8

コマンドを実行すると、次のような出力が生成されます。

    20.61 20.04 200
    80.24 79.43 200
    19.87 18.06 200
    79.97 79.24 200
    35.18 24.36 200
    87.52 86.74 200
    26.65 21.52 200
    81.64 80.89 200
    28.47 17.66 200
    82.29 81.53 200

リクエストを結び付けるのに役立つ、次のような他のHTTPヘッダーがあります。

- `X-Endeca-Portlet-Id` - アプリケーション内のポートレットの一意のID。
- `X-Endeca-Session-Id` - ユーザー・セッションのID。
- `X-Endeca-Gesture-Id` - エンド・ユーザー・アクションのID (StudioでCLIENTロギングが有効になっていない場合は入力されません)。
- `X-Endeca-Request-Id` - 複数のDgraphリクエストが1つのDgraph Gatewayリクエストに送信された場合、これらすべての`X-Endeca-Request-Id`は同じになります。