・アクセスログの記録について
Xcuteでアプリケーション利用者の情報を記録する方法について解説します。
Xcuteでログを取る場合、大きく分けて2つの方法があります。
1つ目は、取得した情報をデータベースに書き込む方法。
2つ目はマクロでテキストファイルに書き出す方法です。
データベースへ書き込む方法では、記録したデータの集計や抽出がSQLで行える
メリットがありますが、ログを都度DBに書き込むためパフォーマンスが若干低下します。
テキストに書き出す方法では、ログの取得自体にほとんど負荷はかかりませんが
蓄積したログを定期的に整理する必要性があります。
また、ログ書き出しの仕組みはマクロを使って作成するため、VBAの知識が
必要になる場合があります。
上記性質をふまえてとちらの方法でログを記録するか判断してください。
・Xcuteの機能でDBに記録する方法
画面ごとにXcuteのレポートを動作させ、DBに書き込む手法です。
あらかじめログ情報を読み取るレポートを作成しておき、そのレポートを
OverReadコマンドで読み取らせることによりセルの値をDBに書き込みます
Xcuteのレポートは、対象となるひな型シートを定義する必要があるため
ログ用のレポートを画面の数分作らなくてはならないと思われがちですが、
OverReadコマンドは、現在のひな型から読み取る仕組みになっているため
1つレポートで各画面(シート)のログを記録することが可能です。
まずはlog_test.zipをダウンロードし、プロジェクトをを動作させて下さい
http://localhost/procgi11/procgi.exe?P=log_test&writesheet=aaa
※URLのprocgi11などの部分は実際の環境に合わせて適宜変更して下さい。
このひな型のサンプルでは、ログを取得するためのLogレポートを1つだけ作成しています。
R5C3:R5C7の範囲を取り込むログ情報とし、Logレポートに接続したテーブルとマッピングしています
OverReadコマンドを各画面に記述し、画面ごとにLogレポートを動作させることでログ情報を
データベースに取り込んでいます。
画面の構成によっては「ひな型が一致しない」エラーが発生する場合があります。(ひな型の設定で定義した
シートと現在読み込んだシートを照合しているためです。)
この場合はC1列にDataEndコマンドを入れることで回避します。
・マクロを使用してテキストファイルに書き出す方法
当サンプルでは、上記のレポートによるログの取得と同時に画面ごとにマクロを
動作させテキストファイルに書き出すことも行っています。
各画面にRUNコマンドを記述するだけなので、設置が非常に簡単であることが特徴です。
具体的には、WriteLogマクロを作成し、各画面でRUNAコマンドで呼び出しています。
マクロの内容はR6C9〜R6C16のセルの値とシステムから取得した日時を配列に格納し
XcuteインストールフォルダのLogフォルダにWhoAccess.Logというファイルを生成して
格納する仕組みです。
マクロ方式の設定方法
このひな型ファイルより、WriteLogマクロをコピーし、ログを組み込みたいプロジェクトの
ひな型に貼り付けます。この際、マクロは標準モジュールに追加するようにして下さい。
次にR2C8以降のセルにRUNAコマンドを記述します。
RUNコマンドの書式はオンラインヘルプをご覧下さい。
マクロを自分で記述することが出来れば、ログに格納するセル番地など自由に設定することが出来ます。
その際の注意点としては、マクロが暴走しないようにエラー処理等もきっちり作り込むことです。
マクロの不具合はXcuteの動作に影響を及ぼしますので注意して設計して下さい。
こちらのひな型に記載されたWriteLogマクロでは上図のようなログが記述されます。
・アクセスログ記録時の注意
極端にファイルサイズが大きくならないように、定期的にローテーションしたり削除するようにメンテナンスして下さい。
ログファイルが肥大化したり、ファイル数が増えるとXCuteの動作に影響を与える恐れがあります。