ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

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

ログファイルの詳細  


 

 

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

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

  • 4DRequestsLog.txt
  • 4DRequestsLog_ProcessInfo.txt
  • HTTPDebugLog.txt
  • 4DDebugLog.txt (標準またはタブ分け)
  • 4DDiagnosticLog.txt
  • 4DIMAPLog.txt、4DPOP3Log.txt、および 4DSMTPLog.txt
  • ORDA クライアントリクエストのログファイル

注: ログファイルがサーバーとクライアントの両方においてログファイルが生成可能な場合、サーバー側のログファイル名には"Server" が追加されます。例えば"4DRequestsLogServer.txt"のようにです。

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

  • 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.mmm' の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.mmm" の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ログセッション内で固有かつシーケンシャルなオペレーション番号
2ISO 8601 フォーマットの日付と時間(YYYY-MM-DDThh:mm:ss.mmm)
3プロセスID (p=xx)と固有プロセスID(puid=xx)
4スタックレベル
5コマンド名/メソッド名/メッセージ/タスクの開始・停止情報/プラグイン名、イベント、あるいはコールバックUUIDまたは接続UUID
6ログオペレーションにかかった時間

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

このログの開始方法:

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

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

カラム番号フィールド名詳細
1sequence_numberログセッション内で固有かつシーケンシャルなオペレーション番号
2timeISO 8601 フォーマットの日付と時間(YYYY-MM-DDThh:mm:ss.mmm)
3processIDプロセスID
4unique_processID固有プロセスID
5stack_levelスタックレベル
6operation_typeログオペレーション型。この値は絶対値を取ることがあり得ます:
1:コマンド
2:メソッド(プロジェクトメソッド、データベースメソッド、等)
3: メッセージ(LOG EVENTコマンドによって送信されたもののみ)
4: プラグインメッセージ
5: プラグインイベント
6: プラグインコマンド
7: プラグインコールバック
8: タスク
9: メンバーメソッド(コレクションまたはオブジェクトに割り当てられているメソッド)
スタックレベルを閉じる場合、operation_typeoperation および operation_parameters カラムにはstack_opening_sequence_number column カラムに記録された開始スタックレベルと同じ値が記録されます。例: 
121  15:16:50:777  5  8  1  2 CallMethod Parameters 0
122  15:16:50:777  5  8  2  1 283  0
123  15:16:50:777  5  8  2  1 283  0 122 3
124  15:16:50:777  5  8  1  2 CallMethod Parameters 0 121 61
1行目と2行目はスタックレベルを開き、3行目と4行目はスタックレベルを閉じます。6、7、8 カラム目の値は終了スタックレベル行において繰り返されます。10 カラム目にはスタックレベル開始番号、つまり3行目の122 と4行目の121 が格納されます。
7operation以下のいづれかを表す可能性があります(オペレーション型による):
  • ランゲージコマンドID (type=1 の場合)
  • メソッド名(type=2 の場合)
  • pluginIndex;pluginCommand の組み合わせ(type=4、5、6 または 7 の場合)。'3;2'のような形式で格納されます。
  • タスク接続UUID(type=8 の場合)
  • 8operation_parametersコマンド、メソッド、プラグインに渡された引数
    9form_eventフォームイベント(あれば)。その他の場合には空になります(コードがフォームメソッドまたはオブジェクトメソッド内で実行された場合に使用されると考えて下さい)
    10stack_opening_sequence_number終了スタックレベルにおいてのみ利用。開始スタック卯レベルに対応するシーケンス番号
    11stack_level_execution_time終了スタックレベルにおいてのみ利用。現在記録されているアクションの経過時間をマイクロ秒単位で表します(上記のログの123 行目と124 行目の最後のカラムを参照して下さい)

    このログファイルには内部アプリケーションオペレーションに関連した複数のイベントが記録され、また人間に読めるように書かれています。LOG EVENT コマンドを使用することでカスタムの情報をこのファイルに含めることができます。

    このログの開始方法:

     SET DATABASE PARAMETER(Diagnostic log recording;1) //記録を開始

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

    フィールド名詳細
    sequenceNumberログセッション内において固有かつシーケンシャルなオペレーション番号
    timestampISO 8601 フォーマットの日付と時間(YYYY-MM-DDThh:mm:ss.mmm)
    loggerID任意
    componentSignature任意 - 内部コンポーネント署名
    messageLevel情報、警告、エラーなど
    messageログエントリーの詳細

    イベントによって、タスク、ソケットなどの他の様々なフィールドを記録に含めることができます。

    これらのログファイルは以下のコマンドを使用して始動された、4D アプリケーションとメールサーバー(SMTP、POP3、IMAP) 間の通信をそれぞれ記録します:

    ログファイルは2つの種類を生成することができます:

    • 通常バージョン:
      • 4DSMTPLog.txt、4DPOP3Log.txt、または 4DIMAPLog.txt と名前がつけられます。
      • 添付ファイルは含めません
      • 10MB ごとの自動循環ファイルリサイクルを使用します。
      • 通常のデバッギング用途を想定しています。

    このログを開始するには以下の方法があります:

      •  SET DATABASE PARAMETER(SMTP Log;1) // SMTP ログを開始 または
         SET DATABASE PARAMETER(POP3 Log;1) // POP3 ログを開始 または
         SET DATABASE PARAMETER(IMAP Log;1) // IMAP ログを開始

         
      • 4D Server: 4D Server 管理ウィンドウ内のメンテナンスページリクエストとデバッグログを開始ボタンをクリックします。
        このログのパスはGet 4D file コマンドによって返されます。
    • 拡張バージョン: 
      • 添付ファイルも含まれます。
      • 自動ファイルリサイクルは使用されません。
      • カスタムの名前を使用できます。
      • 特定の目的のために用意されています。

    このログを開始するには以下の方法があります:

      •  $server:=New object
         ...
          //SMTP
         $server.logFile:="MySMTPAuthLog.txt"
         $transporter:=SMTP New transporter($server)
         
          // POP3
         $server.logFile:="MyPOP3AuthLog.txt"
         $transporter:=POP3 New transporter($server)
         
          //IMAP
         $server.logFile:="MyIMAPAuthLog.txt"
         $transporter:=IMAP New transporter($server)

    コンテンツ

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

    カラム #詳細
    1ログセッション中の固有かつシーケンシャルなオペレーション番号
    2RFC3339 フォーマットの日付と時間 (yyyy-mm-ddThh:mm:ss.ms)
    34D プロセスID
    4固有のプロセスID
    5
    • SMTP、POP3、 または IMAP セッションスタートアップ情報。サーバーホスト名、SMTP、POP3、 または IMAP サーバーに接続するのに使用されたTCP ポート番号とTLSステータス
      あるいは
    • サーバーとクライアント間でやりとりされたデータ。"S <" (SMTP、POP3、 または IMAP サーバーから受信したデータ) または "C >" (SMTP、POP3、 または IMAP クライアントから送信されたデータ)から始まります: サーバーから送られてきた認証モードの一覧と選択された認証モード、SMTP、POP3、 または IMAP サーバーから報告されたエラー(あれば)、そしてメールがサーバーに保存されていれば、送信されたメールのヘッダー情報(通常バージョンのみ)
      あるいは
    • IMAP セッションの切断情報

    このログファイルにはリモートマシンが送信する 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

     
    ページの目次 
     
    履歴 

    New
    変更: 4D v17 R5
    変更: 4D v17 R6
    変更: 4D v18 R2
    変更: 4D v18 R3
    変更: 4D v19

     
    ARTICLE USAGE

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