4D アプリケーションは、デバッグあるいは実行の最適化のために有用な複数のログファイルを生成することができます。ログは通常SET DATABASE PARAMETERあるいはWEB SET OPTIONコマンドのセレクターを使用して開始・停止され、データベースのLogsフォルダ内に保存されます(4Dファイルの説明を参照してください)。
記録された情報は、問題の検知と修正のためには分析する必要があります。この付録では以下のログファイルの包括的な詳細を提供します:
- 4DRequestsLog.txt
- 4DRequestsLog_ProcessInfo.txt
- HTTPDebugLog.txt
- 4DDebugLog.txt
これらのログファイルは、デバッグ中に時系列を確立しエントリー間のつながりを分かりやすくするために、いくつかのフィールドを共有しています:
- sequence_number: この番号は全てのデバッグログ間で固有で重複せず、ログファイルに関わらず新しいエントリーごとに増加されるので、オペレーションの厳密な順番を知ることができます。
- connection_uuid: 4Dクライアントで作成されサーバーに接続する4Dプロセスには、全てこの接続UUIDがサーバー側とクライアント側とで記録されます。これにより各プロセスをローンチしたリモートクライアントを簡単に識別することができます。
このログファイルはコマンドを実行した4D Serverマシン、あるいは4D リモートマシンによって実行された標準のリクエストを記録します(Webリクエストを除きます)。
このログの開始方法:
注: この宣言は4DRequestsLog_ProcessInfo.txtも開始させます(以下参照)。
ヘッダー
このファイルは以下のヘッダーから始まります:
- Logセッション識別子
- アプリケーションをホストしているサーバーのホスト名
- ユーザーログイン名: サーバー上で4Dアプリケーションを実行したユーザーのOS上のログイン名
コンテンツ
各リクエストに対して、以下のフィールドが記録されます:
フィールド名 | 詳細 |
sequence_number | ログセッション内で固有かつシーケンシャルなオペレーション番号 |
time | 'MM/DD/YY, HH:MM:SS'フォーマットを使用した日付と時間 |
task_id | 内部タスクID |
component | コンポーネント署名(例: '4SQLS' or 'dbmg') |
process_info_index | 4DRequestsLog_ProcessInfo.txtログの"index"フィールドに対応し、リクエストをプロセスへとリンクするのを可能にします。 |
request | C/SでのリクエストID、あるいはSQLリクエストまたはLOG EVENTメッセージ用のメッセージ文字列 |
bytes_in | 受信したバイト数 |
bytes_out | 送信したバイト数 |
duration | アクションを実行するにかかった時間(ミリ秒) |
task_kind | プリエンプティブかコオペラティブか(それぞれ'p'と'c'で表される) |
connection_uuid | 4D クライアント接続、SQL接続、あるいはHTTP接続かのUUID識別子(4DRequestsLog_ProcessInfo.txt内と同じ番号) |
このログファイルはコマンドを実行した4D Serverマシン、あるいは4Dリモートマシンによって作成されたそれぞれのプロセスについての情報を記録します(Webリクエストを除きます)。
このログの開始方法:
注: この宣言は4DRequestsLog.txt ログファイルも開始させます(上記参照)。
ヘッダー
このファイルは以下のヘッダーから始まります:
- ログセッション識別子
- アプリケーションをホストしているサーバーのホスト名
- ユーザーログイン名: サーバー上で4Dアプリケーションを実行したユーザーのOS上のログイン名
コンテンツ
各リクエストに対して、以下のフィールドが記録されます:
フィールド名 | 詳細 |
sequence_number | ログセッション内で固有かつシーケンシャルなオペレーション番号 |
time | 'MM/DD/YY, HH:MM:SS'フォーマットを使用した日付と時間 |
index | 固有かつシーケンシャルなプロセス番号 |
CDB4DBaseContext | DB4DコンポーネントデータベースコンテキストUUID |
VTaskID | 内部タスクID |
server_process_id | サーバー上のプロセスID |
remote_process_id | クライアント上のプロセスID |
process_name | プロセス名 |
cID | 4D接続の識別子 |
uID | 4Dクライアントの識別子 |
IP | クライアントのIPv4アドレス |
host_name | クライアントのホスト名 |
user_name | クライアント上のユーザーログイン名 |
connection_uuid | プロセス接続のUUID識別子(4DRequestsLog.txt内と同じ番号) |
このログファイルは各HTTPリクエストとそれぞれのレスポンスをrawモードで記録します。ヘッダーを含めたリクエスト全体が記録されます。オプションとして、ボディも記録することができます。
このログの開始方法:
リクエストとレスポンスの両方に対して以下のフィールドが記録されます:
フィールド名 | 詳細 |
SocketID | 通信に使用されたソケットのID |
PeerIP | ホスト(あるいはクライアント)のIPv4アドレス |
PeerPort | ホスト(あるいはクライアント)が使用したポート番号 |
TimeStamp | (システムが開始されてからの)ミリ秒単位でのタイムスタンプ |
ConnectionID | 接続UUID(通信に使用されたVTCPSocketのUUID) |
SequenceNumber | ログセッション内で固有かつシーケンシャルなオペレーション番号 |
このログファイルは4Dプログラミングレベルで発生するそれぞれのイベントを記録します。標準モードではイベントの基本的なビューを提供します。
このログの開始方法:
それぞれのイベントに対して、以下のフィールドが記録されます:
カラム番号 | 詳細 |
1 | ログセッション内で固有かつシーケンシャルなオペレーション番号 |
2 | ログの開始からのミリ秒単位での経過時間 |
3 | プロセスID (p=xx)と固有プロセスID(puid=xx) |
4 | スタックレベル |
5 | コマンド名/メソッド名/メッセージ/タスクの開始・停止情報/プラグイン名、イベント、あるいはコールバックUUIDまたは接続UUID |
6 | ログオペレーションにかかった時間(ミリ秒単位、2番目のカラムとは異なる) |
このログファイルは4Dのプログラミングレベルで発生するそれぞれのイベントを、タブ分けされた、(標準のフォーマットに比べて)追加された情報を含むコンパクトなフォーマットで記録します。
このログの開始方法:
それぞれのイベントに対し、以下のフィールドが記録されます:
カラム番号 | 詳細 |
1 | ログセッション内で固有かつシーケンシャルなオペレーション番号 |
2 | "hh:mm:ss:ms"フォーマットでの、ログが開始されてからの経過時間(この前に日付カウンターが追加されることもあります。例えば、ログの開始が3日前だった場合、経過時間は"3+11:58:23:163"のようになります)。 |
3 | プロセスID |
4 | 固有プロセスID |
5 | スタックレベル |
6 | 以下のいづれかを表示する可能性があります(8番目のカラムに記録されるエントリー型によります): ランゲージコマンドID(type=1の場合) | メソッド名(type=2の場合) | pluginIndex;pluginCommandの組み合わせ(type=4, 5, 6 あるいは 7の場合)例えば'3;2'などのようになります | タスク接続UUID (type=8の場合) | あるいはスタックレベルを閉じる場合には'starting sequence number'(これはカレントのアクションの開始のシーケンス番号に対応するはずです) |
121 15:16:50:777 5 8 0 CallMethod 2 0 | 122 15:16:50:777 5 8 1 283 1 0 | 123 15:16:50:777 5 8 1 122 -1 0 3 | 124 15:16:50:777 5 8 0 121 -2 0 61 | この最後の行(124)では、6番目のカラムの値'121'は最初の行のシーケンス番号(スタックレベル0)に対応します。その上の行(123)におていは、6番目のカラムの値'122'はその上の行のシーケンス番号(スタックレベル1)に対応します。 |
7 | コマンド、メソッド、あるいはプラグインに渡された引数 |
8 | ログオペレーション型。この値は原則として絶対値を取ります: 1:コマンド | 2:メソッド | 3: メッセージ(LOG EVENTコマンドによって送信されたもののみ) | 4: プラグインメッセージ | 5: プラグインイベント | 6: プラグインコマンド | 7: プラグインコールバック | 8: タスク | 値が負の値である場合、対応する正の値のスタックレベルを閉じているという意味です(上記のログの123行目と124行目の8番目のカラムを参照してください)。 |
9 | あればフォームイベント、それ以外の場合にはフォームイベント(このカラムはコードがフォームメソッドあるいはスクリプト内で実行されている場合にのみ使用されます)。 |
10 | マイクロ秒で記録された、カレントの記録されているアクション内での経過時間。スタックレベルを閉じる場合にのみ使用されます(上記のログの123行目と124行目の10番目のカラムを参照してください) |