前の記事(FireDACでアプリケーションとデータベースの通信ログを取得する(1)FDMonitorに出力する)では付属の通信追跡ソフトFDMonitorに通信ログを出力する方法を紹介しました。
今回は、テキストファイルにFireDACでアプリケーションとデータベースの通信ログを出力する方法です。
テキストファイルに通信ログを出力するには、TFDMoniFlatFileClientLinkコンポーネントを配置し、FileNameプロパティにログファイルのファイル名を設定し、TracingプロパティをTrueにします。
// ログを出力するファイルのファイル名
FDMoniFlatFileClientLink1.FileName := 'C:\log\log.txt';
// 監視を有効にする
FDMoniRemoteClientLink1.Tracing := True;
またTFDConnectionコンポーネントの接続定義パラメータの「MonitorBy」を「FlatFile」にします。
FDConnection1.Params.Add('MonitorBy=FlatFile'); // 追跡出力をファイルに送る
以上で、設定は完了です。
アプリケーションとデータベースの間で通信が行われると、テキストファイルに通信ログが出力されます。
サンプルアプリケーション
SQLiteデータベースの通信ログをテキストファイルに出力するアプリケーションです。
新規にVCLフォームアプリケーションを作成し、フォームに次のコンポーネントを配置します。
- TButton
- TFDConnection
- TFDGUIxWaitCursor
- TFDPhysSQLiteDriverLink
- TFDMoniFlatFileClientLink
Button1のOnClickイベントを記述します。
procedure TForm1.Button1Click(Sender: TObject);
begin
// ログを出力するファイルのファイル名
FDMoniFlatFileClientLink1.FileName := 'C:\log\log.txt';
// 監視を有効にする
FDMoniFlatFileClientLink1.Tracing := True;
// 接続設定
FDConnection1.Params.Clear;
FDConnection1.Params.Add('DriverID=SQLite');
FDConnection1.Params.Add('Database=:memory:');
FDConnection1.Params.Add('MonitorBy=FlatFile'); // 追跡出力をファイルに送る
//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に通信ログが表示されます。