FireDACでアプリケーションとデータベースの通信ログを取得する(1)FDMonitorに出力する

付属の通信追跡ソフトFDMonitorにFireDACでアプリケーションとデータベースの通信ログを出力する方法です。
実行されたSQLを確認したりすることができ、デバッグ時に役に立ちます。

FDMonitorはRAD Studio XE5では標準で次の場所にあります。

C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin\FDMonitor.exe

FDMonitor

FDMonitorに通信ログを出力するには、TFDMoniRemoteClientLinkコンポーネントを配置し、TracingプロパティをTrueにします。

TFDMoniRemoteClientLinkコンポーネント

// 監視を有効にする
FDMoniRemoteClientLink1.Tracing := True;

またTFDConnectionコンポーネントの接続定義パラメータの「MonitorBy」を「Remote」にします。

FDConnection1.Params.Add('MonitorBy=Remote'); // 追跡出力をFDMonitorに送る

以上で、設定は完了です。

アプリケーションとデータベースの間で通信が行われると、FDMonitorに通信ログが表示されます。

サンプルアプリケーション

SQLiteデータベースの通信ログをFDMonitorに出力するアプリケーションです。

新規にVCLフォームアプリケーションを作成し、フォームに次のコンポーネントを配置します。

  • TButton
  • TFDConnection
  • TFDGUIxWaitCursor
  • TFDPhysSQLiteDriverLink
  • TFDMoniRemoteClientLink

フォームデザイン

Button1のOnClickイベントを記述します。

procedure TForm1.Button1Click(Sender: TObject);
begin
  // 監視を有効にする
  FDMoniRemoteClientLink1.Tracing := True;
  // 接続設定
  FDConnection1.Params.Clear;
  FDConnection1.Params.Add('DriverID=SQLite');
  FDConnection1.Params.Add('Database=:memory:');
  FDConnection1.Params.Add('MonitorBy=Remote'); // 追跡出力をFDMonitorに送る
  //sqlite3.dllのパス
  FDPhysSQLiteDriverLink1.VendorLib := 'C:\driver\sqlite3.dll';
  // 接続する
  FDConnection1.Connected := True;

  //データを登録する
  FDConnection1.ExecSQL('create table testtab (id integer, name text)');
  FDConnection1.ExecSQL('insert into testtab(id, name) values (:id, :name)',
    ['1', 'RAD Studio XE5'], [ftInteger, ftString]);
  FDConnection1.ExecSQL('insert into testtab(id, name) values (:id, :name)',
    ['2', 'Delphi XE5'], [ftInteger, ftString]);

  // 追跡出力を一時的に無効にする
  FDConnection1.ConnectionIntf.Tracing := False;

  //データを登録する
  FDConnection1.ExecSQL('insert into testtab(id, name) values (:id, :name)',
    ['3', 'C++Builder XE5'], [ftInteger, ftString]);

  FDConnection1.Close;
end;

アプリケーションを実行してボタンを押すとFDMonitorに通信ログが表示されます。

実行時画面

通信ログ

次の記事は「FireDACでアプリケーションとデータベースの通信ログを取得する(2)テキストファイルに出力する」です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください