4D v18

ログファイルの詳細

ホーム

 
4D v18
ログファイルの詳細

ログファイルの詳細  


 

 

4D アプリケーションは、デバッグあるいは実行の最適化のために有用な複数のログファイルを生成することができます。ログは通常SET DATABASE PARAMETERあるいはWEB SET OPTIONコマンドのセレクターを使用して開始・停止され、データベースのLogsフォルダ内に保存されます(4Dファイルの説明を参照してください)。

記録された情報は、問題の検知と修正のためには分析する必要があります。この付録では以下のログファイルの包括的な詳細を提供します:

  • 4DRequestsLog.txt
  • 4DRequestsLog_ProcessInfo.txt
  • HTTPDebugLog.txt
  • 4DDebugLog.txt
  • 4DSMTPLog.txt
  • ORDAクライアントリクエストのログファイル

これらのログファイルは、デバッグ中に時系列を確立しエントリー間のつながりを分かりやすくするために、いくつかのフィールドを共有しています:

  • sequence_number: この番号は全てのデバッグログ間で固有で重複せず、ログファイルに関わらず新しいエントリーごとに増加されるので、オペレーションの厳密な順番を知ることができます。
  • connection_uuid: 4Dクライアントで作成されサーバーに接続する4Dプロセスには、全てこの接続UUIDがサーバー側とクライアント側とで記録されます。これにより各プロセスをローンチしたリモートクライアントを簡単に識別することができます。

このログファイルはコマンドを実行した4D Serverマシン、あるいは4D リモートマシンによって実行された標準のリクエストを記録します(Webリクエストを除きます)。

このログの開始方法:

  • サーバー上:
     SET DATABASE PARAMETER(4D Server log recording;1) //server side
  • クライアント上:
     SET DATABASE PARAMETER(Client Log Recording;1) //remote side

注: この宣言は4DRequestsLog_ProcessInfo.txtも開始させます(以下参照)。

ヘッダー
このファイルは以下のヘッダーから始まります:

  • Logセッション識別子
  • アプリケーションをホストしているサーバーのホスト名
  • ユーザーログイン名: サーバー上で4Dアプリケーションを実行したユーザーのOS上のログイン名

コンテンツ
各リクエストに対して、以下のフィールドが記録されます:

フィールド名詳細
sequence_numberログセッション内で固有かつシーケンシャルなオペレーション番号
time'YYYY-MM-DDTHH:MM:SS.sss' のISO 8601 フォーマットを使用した日付と時間
systemidシステムID
componentコンポーネント署名(例: '4SQLS' or 'dbmg')
process_info_index4DRequestsLog_ProcessInfo.txtログの"index"フィールドに対応し、リクエストをプロセスへとリンクするのを可能にします。
requestC/SでのリクエストID、あるいはSQLリクエストまたはLOG EVENTメッセージ用のメッセージ文字列
bytes_in受信したバイト数
bytes_out送信したバイト数
durationアクションを実行するにかかった時間(ミリ秒)
server_duration | exec_duration ログが生成された場所によって変わります:
  • クライアント上で生成された場合にはserver_duration --サーバーが、リクエストを処理し、レスポンスを返すまでにかかった時間(マイクロ秒単位)。以下の画像のBからFまでに相当します。
    あるいは
  • サーバー上で生成された場合にはexec_duration  --サーバーがリクエストを処理するまでにかかった時間(マイクロ秒単位)。以下の画像のBからEまでに相当します。
write_duration次のものを送信するのにかかった時間(μs):
  • リクエスト(クライアント上で実行された場合)。以下の画像のAからBまでに相当します。
  • レスポンス(サーバー上で実行された場合)。以下の画像のEからFまでに相当します。
task_kindプリエンプティブかコオペラティブか(それぞれ'p'と'c'で表される)
rttクライアントがリクエストを送信してサーバーがそれを受け取るまでにかかる時間の概算(マイクロ秒単位)。以下の画像のAからDとEからHまでに相当します。
  • ServerNet ネットワークレイヤーを使用している場合にのみ計測されます。旧式ネットワークレイヤを使用していた場合には0 が返されます。
  • Windows 10、あるいはWindows Server 2016 以前のバージョンのWindows においては、これを呼び出すと0 が返されます。

リクエストのフロー:

このログファイルはコマンドを実行した4D Serverマシン、あるいは4Dリモートマシンによって作成されたそれぞれのプロセスについての情報を記録します(Webリクエストを除きます)。


このログの開始方法:

  • サーバー上:
     SET DATABASE PARAMETER(4D Server log recording;1) //server side
  • クライアント上:
     SET DATABASE PARAMETER(Client Log Recording;1) //remote side

注: この宣言は4DRequestsLog.txt ログファイルも開始させます(上記参照)。

ヘッダー
このファイルは以下のヘッダーから始まります:

  • ログセッション識別子
  • アプリケーションをホストしているサーバーのホスト名
  • ユーザーログイン名: サーバー上で4Dアプリケーションを実行したユーザーのOS上のログイン名

コンテンツ

各リクエストに対して、以下のフィールドが記録されます:

フィールド名詳細
sequence_numberログセッション内で固有かつシーケンシャルなオペレーション番号
time"YYYY-MM-DDTHH:MM:SS.sss" のISO 8601 フォーマットを使用した日付と時間
process_info_index固有かつシーケンシャルなプロセス番号
CDB4DBaseContextDB4DコンポーネントデータベースコンテキストUUID
systemidシステムID
server_process_idサーバー上のプロセスID
remote_process_idクライアント上のプロセスID
process_nameプロセス名
cID4D接続の識別子
uID4Dクライアントの識別子
IPクライアントのIPv4/IPv6アドレス
host_nameクライアントのホスト名
user_nameクライアント上のユーザーログイン名
connection_uuidプロセス接続のUUID識別子
server_process_unique_idサーバー上の固有プロセスID

このログファイルは各HTTPリクエストとそれぞれのレスポンスをrawモードで記録します。ヘッダーを含めたリクエスト全体が記録されます。オプションとして、ボディも記録することができます。

このログの開始方法:

 WEB SET OPTION(Web debug log;wdl enable without body//他の値も使用可能

リクエストとレスポンスの両方に対して以下のフィールドが記録されます:

フィールド名詳細
SocketID通信に使用されたソケットのID
PeerIPホスト(あるいはクライアント)のIPv4アドレス
PeerPortホスト(あるいはクライアント)が使用したポート番号
TimeStamp(システムが開始されてからの)ミリ秒単位でのタイムスタンプ
ConnectionID接続UUID(通信に使用されたVTCPSocketのUUID)
SequenceNumberログセッション内で固有かつシーケンシャルなオペレーション番号

このログファイルは4Dプログラミングレベルで発生するそれぞれのイベントを記録します。標準モードではイベントの基本的なビューを提供します。

このログの開始方法:

 SET DATABASE PARAMETER(Debug Log Recording;2) //標準、全プロセスを記録
 SET DATABASE PARAMETER(Current process debug log recording;2) //標準、カレントプロセスのみを記録

それぞれのイベントに対して、以下のフィールドが記録されます:

カラム番号詳細
1ログセッション内で固有かつシーケンシャルなオペレーション番号
2ログの開始からのミリ秒単位での経過時間
3プロセスID (p=xx)と固有プロセスID(puid=xx)
4スタックレベル
5コマンド名/メソッド名/メッセージ/タスクの開始・停止情報/プラグイン名、イベント、あるいはコールバックUUIDまたは接続UUID
6ログオペレーションにかかった時間(ミリ秒単位、2番目のカラムとは異なる)

このログファイルは4Dのプログラミングレベルで発生するそれぞれのイベントを、タブ分けされた、(標準のフォーマットに比べて)追加された情報を含むコンパクトなフォーマットで記録します。

このログの開始方法:

 SET DATABASE PARAMETER(Debug Log Recording;2+4) //拡張されたタブ分けされたフォーマット、全プロセスを記録
 SET DATABASE PARAMETER(Current process debug log recording;2+4) //拡張されたタブ分けされたフォーマット、カレントプロセスのみを記録

それぞれのイベントに対し、以下のフィールドが記録されます:

カラム番号詳細
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: タスク
    9: メンバーメソッド(コレクションまたはオブジェクトに割り当てられているメソッド)
    値が負の値である場合、対応する正の値のスタックレベルを閉じているという意味です(上記のログの123行目と124行目の8番目のカラムを参照してください)。
    9あればフォームイベント、それ以外の場合にはフォームイベント(このカラムはコードがフォームメソッドあるいはオブジェクトメソッド内で実行されている場合にのみ使用されます)。
    10マイクロ秒で記録された、カレントの記録されているアクション内での経過時間。スタックレベルを閉じる場合にのみ使用されます(上記のログの123行目と124行目の10番目のカラムを参照してください)

    このログファイルには4D アプリケーションとSMTP サーバーとの通信がそれぞれ記録されます。このファイルには2つのバージョンがあります:

    • 通常バージョン: ファイル名は4DSMTPLog.txt で添付は含まず、10MB ごとに自動循環ファイルリサイクルを行います。通常のデバッグのための使用を想定されています。
      このログを開始するためには:
      •  SET DATABASE PARAMETER(SMTP Log;1) //smtp ログを開始
      • 4D Server: 4D Server 管理ウィンドウのメンテナンスページリクエストとデバッグログを開始ボタンをクリックします。
      このログのパスはGet 4D file コマンドによって返されます。
    • 拡張バージョン: 添付も含まれ、自動リサイクルは行われません。特定の目的のために用意されています。
      このログを開始するためには:
       $server:=New object
       ...
       $server.logFile:="MySMTPAuthLog.txt"
       $transporter:=SMTP New transporter($server)

    コンテンツ

    各リクエストごとに、以下のフィールドが記録されていきます:

    カラム番号詳細
    1ログセッション内で使用する重複不可かつシーケンシャルなオペレーション番号
    2RFC3339 フォーマット(yyyy-mm-ddThh:mm:ss.ms) の日付と時間
    34Dプロセス ID
    4固有プロセス ID
    5
    • SMTP セッションのスタートアップ情報。サーバーホスト名も含まれます。SMTP サーバーに接続するのに使用されたTLSのステータスも含まれます。
      または
    • サーバーとクライアント間でやりとりされたデータ(SMTP サーバーから受け取ったデータ)は"S <"から始まり、あるいは"C >"(SMTP クライアントによって送られたデータ): サーバーから送信された認証モードの一覧と選択された認証モード、およびSMTP サーバーから報告された全てのエラー、送信したメールのヘッダー情報(通常バージョンのみ)。またメールがサーバー上で保存されている場合、
      or
    • 送信した全てのメールのMIME 情報* (拡張バージョンのみ)
      or
    • SMTP セッションのクローズ時の情報

    *警告: MIME コンテンツ(添付) はデータ量が大量になる可能性があります。これらのデータを保存するディスク上の十分なスペースが必ずあるようにください。

    このログファイルにはリモートマシンが送信する ORDA リクエストが記録されます。ログ情報はメモリか、あるいはディスク上のファイルに書くことができ、ファイル名や保管場所も任意に決めることができます。

    このログの開始方法:

      // リモートマシンで実行します
     ds.startRequestLog(File("/PACKAGE/Logs/ordaLog.txt")) // メモリに送ることもできます

    注: ORDAリクエストログにおいてユニークな連続番号を使うには、次のように開始します:

      // リモートマシンで実行します
     SET DATABASE PARAMETER(Client Log Recording;1) // ログシーケンス番号の有効化
     ds.startRequestLog(File("/PACKAGE/Logs/ordaLog.txt")) // メモリに送ることもできます
     SET DATABASE PARAMETER(Client Log Recording;0) // ログシーケンス番号の無効化

    各リクエストに対して、以下のフィールドが記録されます:

    フィールド名詳細
    sequenceNumberログセッション内で固有かつシーケンシャルなオペレーション番号104
    urlクライアントの ORDA リクエスト URL"rest/Persons(30001)"
    startTime開始日時 (ISO 8601 フォーマット)"2019-05-28T08:25:12.346Z"
    endTime終了日時 (ISO 8601 フォーマット)"2019-05-28T08:25:12.371Z"
    durationクライアント処理時間 (ミリ秒)25
    responseサーバーレスポンスオブジェクト{"status":200,"body":{"__entityModel":"Persons",[...]

     
    プロパティ 

    プロダクト: 4D
    テーマ: Debug log files

     
    ページの目次 
     
    履歴 

    変更: 4D v17 R5
    変更: 4D v17 R6

     
    ARTICLE USAGE

    デザインリファレンス ( 4D v18)