| Active DisplayクライアントのアクティビティログをODBCデータベースにエクスポートするユーティリティ |
このテクニカルノートの情報は、以下に該当します:
| 製品: | RSView32 Active Display | タイプ: | アプリケーションノート |
| テクニカルノートID: | A1574JA | ||
| パッケージ/モジュール: | Display Client | 英文版作成日: | 2001/06/26 |
| リビジョン: | 6.20.63 6.30.16 | ||
| 修正リビジョン: | |||
| サブシステム: | Activity Logging Utilities |
| テクニカルノート本文: |
リビジョンノート:
2001年5月25日:このアプリケーションは、Ver. 1.1.0にアップデートされています。このバージョンでは、以下の問題を解決しています。
- クライアントのアクティビティ・ログ・エクスポート・アプリケーションが、オペレーティングシステムのローカル言語設定の日付フォーマットを持つActive Displayのアクティビティ・ログ・ファイルを検索していました。現在、このアプリケーションは、英語の日付テキストを持つアクティビティ・ログ・ファイルのみを検索します。
- Active Displayクライアントにアクティビティファイル用に定義されたパスがある場合、クライアント・アクティビティ・ログ・エクスポートは、このパスを使用して、ログファイルを特定します。このパスは、デフォルトではC:に設定され、以下のレジストリキー文字列エントリによって定義されます。
HKEY_CURRENT_USER\Software\Rockwell Software\RSView32 Active Display Station\RSView32 Client\Client
"Logging Path"="C:" - クライアント・アクティビティ・ログ・エクスポートは、Active Displayクライアントがクローズしていることを検出すると、ログファイル内の新しいエントリをチェックして、新しいエントリをエクスポートします。通常は、次にアプリケーションが開始されるまでに、これが行なわれます。
2001年1月9日:Client Activity Log ExportアプリケーションがVer. 1.0.7にアップグレードされました。このバージョンは、アクティビティ・ログ・ファイルのYY/MM/DDフォーマットの日付(01/01/02など)が2002年1月1日として誤って処理されるという問題を修正しています。この問題により、2001年1月2日以降のエントリの日付がODBCデータベースに間違って格納されていました。修正済みバージョンをダウンロードするには、以下のリンクを参照してください。
背景:
RSView32 Active Displayクライアントの多数のアクティビティイベントは、RADクライアントウィンドウのアクティビティバーにログされて、そのいくつかがRSView32 Active Displayサーバにログされます。RADクライアントは、アクティビティバーに表示されているイベントをファイルにログできます。これらのファイルを削除するためのファイル管理機能がないため、これらのファイルは毎日午前0時に作成されて、RADクライアント上に格納されたままになります。
RADクライアントのアクティビティログはテキストファイルであり、オペレーティング・システム・ドライブのルートディレクトリに格納されています。このファイルは、以下に示すように、3つのフィールドから構成される固定フォーマットです。
00/03/15, 13:45:11, User joe is now logged into this station
00/03/15, 13:45:12, display Demos
00/03/15, 13:45:13, Process Start [MACRO]
00/03/15, 13:45:13, Display Process Batch
クライアントのアクティビティログに格納されているイベントには、イベントのRSView32ユーザ名もコンピュータ名も含まれません。いくつかのプロジェクトでは、このタイプの情報を外部データベースに保存する必要があります。ユーザ名はクライアントのアクティビティログから抽出でき、クライアントには固有のログファイルがあるため、クライアントのアクティビティ・ログ・ファイルの各イベント用にこの情報を抽出できます。
RADクライアントのアクティビティ情報をODBCデータベースにエクスポートするために、Client Activity Log Export (CALE)というアプリケーションが作成されました。
Client Activity Log Export
RSView32には、ActivityLogSendToODBCというコマンドがあり、RSView32のアクティビティログをODBCデータベースにエクスポートします。このコマンドは、RADシステムのサーバのアクティビティログをインポートするためだけに機能します。RADクライアントのアクティビティログをこのRSView32コマンドと同じデータベースフォーマットにエクスポートするために、CALEアプリケーションが開発されました。CALEアプリケーションは、クライアントのStartupマクロ内のAPPSTARTコマンドによってActive Displayクライアント上で起動するユーティリティです。以下に例を示します。
APPSTART "ClientActivityLog Export<パラメータ(以下を参照)>"
CALEアプリケーションの特長:
l 指定したデータベーステーブルが存在しない場合、テーブルを作成するかどうかをアプリケーションが尋ねます。
l アクティビティ・ログ・ファイルの新しい情報の有無をチェックする時間を構成できます。
l 指定した時間にわたりODBCコネクションをオープンにしておくように構成できます。
l 最後に更新した後の変更のみをエクスポートして、最後の更新および最後に認識されたユーザ名を保持します。
l 指定した間隔でステータスメッセージをODBCデータベースに書込むように構成できます。
l エラー情報メッセージをODBCデータベースに送信するように構成できます。
l RADクライアントから呼出して、チェックして、必要であればエクスポートして、終了できます。
CALEアプリケーションのオペレーションは、コマンド・ライン・パラメータによって定義されます。構文は、以下のとおりです。
ClientActivityLogExport <ODBC_data_source> <table_name> [/Uuser_name] [/Ppassword] [/Wn] [/Fn][/E] [/L] [/Sn] [/N]
<ODBC_data_source> アプリケーションがデータベースとの接続に使用する有効なデータソース名。ファイルベースのODBCソースを指定するには、ODBCソース名に.DSNが含まれていなければなりません。ODBCソース名にはスペースを使用できません。
<table_name> データがエクスポートされるデータベースのテーブル名。
[/Wn] コネクションをデータベースに保存する時間をアプリケーションに知らせるオプションのパラメータで、0~65,535の範囲内で分単位で定義します。値0は、コネクションが切断しないことを意味します。デフォルトでは、情報送信後すぐにコネクションが切断されます。
[/Uuser_name] データソース場で有効なユーザIDをアプリケーションに知らせるオプションのパラメータ
[/Ppassword] データソースから要求された場合に、アプリケーションがユーザ確認文字列(パスワード)として使用するオプションのパラメータ。
[/Fn] ODBCデータベースに送信されるクライアント・アクティビティ・ログの新しいエントリの有無をチェックする間隔をアプリケーションに知らせるオプションのパラメータ。5~65000の範囲内で秒単位で定義されます。デフォルト値は15secです。
間隔が60よりも大きい場合は、定義された時間の5sec以内にチェックが行なわれます。これは、値が63secの場合、イベントは65secに発生することを意味します。
[/E] 変更をデータベースにエクスポートして終了することをアプリケーションに知らせるオプションのパラメータ。このパラメータは優先的に実行され、/Wおよび/Fパラメータが指定されている場合、アプリケーションはこれらを無視します。
[/L] コネクションが存在する場合、エラーメッセージをODBCデータベースにログすることをアプリケーションに知らせるオプションのパラメータ。
[/Sn] CALEアプリケーションのオペレーション用にステータスメッセージをODBCデータベースに送信することをアプリケーションに知らせるオプションのパラメータ。1~65000の範囲内で分単位で定義されます。
[/N] RADクライアントの有無をチェックしないことをアプリケーションに知らせるオプションのパラメータ。このパラメータが指定されていない場合、CALEアプリケーションは、RADクライアントがアクティブかどうかを15secごとにチェックします。このパラメータを指定すると、RADクライアントがクローズしたときにCALEアプリケーションが終了することが防止されます。
データベーステーブルのフォーマット:
以下のドキュメントテーブルは、CALEアプリケーションが情報をエクスポートするODBCデータベースの概要およびレコードの内容を示します。CALEアプリケーションは、スタートアップ時にデータベースのテーブルのフォーマットをチェックして、テーブルのフォーマットに以下のフィールドが含まれていない場合は、そのテーブルフォーマットが無効であることをレポートして、終了します。
フィールド名 | フィールドの説明 | SQLデータタイプ | MSAccessのデータタイプ | フィールド長 | 各レコードに使用されるデータ |
Type | アクティビティタイプの番号: 0はエラー 1は警告 2は情報 | SQL_SMALLINTまたはSQL_INTEGER | 数字:整数 | 2または4 | 2 |
Id | ログメッセージを送信するコンポーネントの番号 (内部使用 | SQL_INTEGER | 数字: ロング整数 | 4 | その日の対応するアクティビティ・ログ・ファイルのエントリの行番号 |
DateAndTime | データがログされた時刻および日付 | SQL_TIMESTAMP ** | 日付/時刻 | ドライバによって異なる | 各エントリの日付および時刻 |
Millitm | データがログされた時刻(msec) | SQL_SMALLINTまたはSQL_INTEGER | 数字:整数 | 2または4 | 0 |
DstFlag | 夏時間(DST)フラグ 1:DSTが有効 0:DSTが無効 | SQL_VARCHARまたはSQL_CHAR | 文字列 | 1 | 0または1 |
Category | アクティビティのカテゴリ | SQL_VARCHARまたはSQL_CHAR | 文字列 | 20 | "Commands"という文字列 |
Source | アクティビティを生成したコンポーネント | SQL_VARCHARまたはSQL_CHAR | 文字列 | 20 | “Command Server”という文字列 |
UserId | アクティビティの発生時にログオンしていたユーザ | SQL_VARCHARまたはSQL_CHAR | 文字列 | 20 | クライアント・アクティビティ・ログから派生した最後に認知されたユーザ |
Dscrptn | アクティビティの説明 | SQL_VARCHARまたはSQL_CHAR | 文字列 | 132 | アクティビティ・ログ・ファイルに入力された説明 |
UserStn | データをログしたアプリケーションを実行しているコンピュータ名 | SQL_VARCHARまたはSQL_CHAR | 文字列 | 15 | RADステーションのコンピュータ名 |
LoggingStn | サーバが実行されているコンピュータ名 | SQL_VARCHARまたはSQL_CHAR | 文字列 | 15 | RADステーションのコンピュータ名 |
** ODBCデータベースがSQL_TIMESTAMPデータタイプをサポートしていない場合は、データの一部が格納されないことがあります。例えば、OracleのODBCドライバは、SQL_TIMESTAMPタイプをサポートしていません。OracleがサポートしているSQL_DATEタイプが使用された場合は、日付および時刻の両方がこのタイプのフィールドに格納されるため、データは正しく格納されます。しかし、FoxProはSQL_TIMESTAMPをサポートしておらず、FoxProがサポートしているSQL_DATEタイプは日付および時刻の両方を格納できないため、データの一部が格納されません。
ステータスアップデート(/Snパラメータ):
ステータスアップデートのオプションのロギングが指定された間隔で発生します。ODBCデータベースへのコネクションが確立されていない場合は、コネクションが作成されて、ステータスアップデートが送信されます。コマンドラインで/Fパラメータが指定されている場合は、30secまたは/Fパラメータの指定値の2倍のいずれか小さい方の時間にわたり、コネクションはオープンな状態を保ちます。
以下の表は、ステータスメッセージが送信されたときのデータベースレコードの内容を示します。
レコードに使用されるデータ | |
Type | 2 |
Id | 0 |
DateAndTime | 現在の日付および時刻 |
Millitm | 0 |
DstFlag | 0または1 (OSによって異なる) |
Category | “Application” |
Source | “ClientActLogExp” |
UserId | 適用しない |
UserStn | ステーションのコンピュータ名 |
LoggingStn | ステーションのコンピュータ名 |
CALEアプリケーションのさまざまなオペレーションイベントで、Dscrptnフィールドには以下のテキストが含まれます。
イベント | Dscrptnフィールドのデータ |
スタートアップ | “Client Activity Log Export Application Status: Started.” |
ステータス間隔時間 | “Client Activity Log Export Application Status: Running.” |
CALEアプリケーションのシャットダウン | “Client Activity Log Export Application Status: Stopped.” |
エラーメッセージ(/Lパラメータ)のロギング:
すべてのエラーメッセージは、オペレーティングシステムのイベントログに格納されます。/Lパラメータが指定され、データベースへのコネクションが既に確立されている場合は、オペレーティングシステムのイベントログに格納されているエラーメッセージは、ODBCデータベースにも送信されます。データベースへのコネクションは、エラーロギングのアクションによって作成またはオープンされません。
データベースのフィールドには、エラーメッセージの以下の情報が格納されます。
フィールド名 | レコードに使用されるデータ |
Type | 0 |
Id | 0 |
DateAndTime | 現在の日付および時刻 |
Millitm | 0 |
DstFlag | 0または1 (OSによって異なる) |
Category | “Application” |
Source | “ClientActLogExp” |
UserId | 適用しない |
UserStn | ステーションのコンピュータ名 |
LoggingStn | ステーションのコンピュータ名 |
Dscrptn | <エラーメッセージの内容> |
ログされたエラーメッセージの先頭には、重要度に基づいて、“Critical:”, “Warning:”, または“Information:”という文字列と、エラーメッセージの文字列が付いています。
/Nパラメータを使用する:
CALEアプリケーションが、アクティブなRADクライアントのチェックを無効にする/Nパラメータを使用している場合は、以下のいずれかの方法でCALEアプリケーションをシャットダウンする必要があります。
- DDEEXECUTEというRSView32コマンドを使用して、以下の構文でアプリケーションをシャットダウンする。
DDEExecute ActivityLogExport|CALECMD EXIT - アプリケーションのTrayアイコンを右クリックして、Unloadメニューをクリックします。
- 以下のRSView32コマンドを発行します。
AppAbort "Activity Log Export"
方法1では、DDE内部コマンドにより、アプリケーションが自動的にクローズして、終了します。方法2および方法3では、Messageボックスが表示されて、アプリケーションを終了するかどうかが尋ねられます。どちらの方法を使用しても、メッセージがログされて、アプリケーションがシャットダウンされたことを示します。
/Eパラメータを使用する:
/Eパラメータが指定されている場合、CALEアプリケーションはスタートアップして、データベースのコネクションを検証して、アクティビティログの変更の有無をチェックして、変更があればデータベースに送信して、終了します。通常、このパラメータは、イベントベースでアクティビティ・ログ・ファイルがエクスポートされる場合(オペレータのログイン時、勤務時間の終了時など)に使用されます。このような場合、RADクライアントは、APPSTARTというRSView32コマンドを使用して、CALEアプリケーションを開始する必要があります。RADサーバ上ではイベントディテクタおよびVBAが実行されているため、RADクライアントのイベント(ボタンのクリックまたはActiveXコントロールのイベントなど)からこのコマンドを開始する必要があります。
制限事項:
- RADクライアントはアクティビティ・ログ・ファイルを管理しておらず、新しいファイルは毎日生成されます。これは、クライアント上にファイルが累積されて、ファイルがエクスポートされた後も、ディスクスペースを使用していることを意味します。これらのファイルを管理するには、外部アプリケーションが必要です。
- 何らかの理由でデータベースへのコネクションを確立できない場合は、アクティビティ・ログ・ファイルの変更の有無のチェックが停止されて、1分間ごとに最大3回までコネクションの確立を試みます。3回の試みでコネクションを確立できない場合、CALEアプリケーションは終了します。コネクションが確立された場合、CALEアプリケーションはアクティビティログの変更の有無をチェックして、必要であれば変更内容をエクスポートします。
- CALEアプリケーションを使用してRADクライアントのアクティビティをエクスポートする場合は、1つのRADクライアントのみをアクティブにすることをお奨めします。コンピュータ上で複数のRADクライアントウィンドウを実行すると、複数のRADクライアントウィンドウがアクティビティのエントリを同じアクティビティ・ログ・ファイルに書込んだ場合に、各アクティビティエントリがどのRADクライアントから書込まれたかを判断できなくなります。
- 履歴ファイルに保存されているユーザ名は、アクティビティ・ログ・ファイルから引用されます。ユーザ名を判断するために、“User XXX is now logged into this station"という文字列が使用されます。XXXはユーザ名を表します。通常、RADクライアントのスタートアップ時にログされた最初のアクティビティイベントの1つが、この文字列となります。CALEアプリケーションがアクティビティファイルを処理していて、以前に引用したユーザ名がない場合は、ユーザ名に"Unknown"という文字列が使用されます。
- システムが最初にスタートアップした時点では、履歴ファイルは持っていないため、その日のアクティビティログのエントリについてチェックおよびエクスポートを開始します。履歴ファイルが削除された場合や見つからない場合は、現在の日付からエクスポートプロセスが開始されるため、ODBCデータベースのエントリが重複することがあります。
- CALEアプリケーションは、Microsoft SQL Server 7.0, Microsoft Access 97およびAccess 2000との接続性について、テストされています。他のODBC準拠データベースも正しく動作すると思われますが、他のデータベースタイプはテストされていません。
Client Activity Log Export Applicationのインストール:
以下のリンクをクリックして、ダウンロードを開始します。
- CALE_INS.EXEファイルのローカルコピーがダウンロードされたら、CALE_INS.EXEアプリケーションをアプリケーションを各RADクライアントにコピーするか、またはネットワーク上のインストールフォルダを共有します。
- 各クライアントについて、すべてのプログラムをクローズして、自動抽出ファイルを実行して、ファイルを解凍して一時的な場所にコピーして、Setup.EXEファイルを実行して、Client Activity Log Exportアプリケーションをインストールします。
インストール時の注意:インストールの実行中に、SCRRUN.DLLのより新しいバージョンが既にシステムに存在することを示すメッセージボックスが表示されることがあります。yesをクリックすると、より新しいバージョンが保持されます。
弊社では、このユーティリティにテストを実施して、正しく機能することを確認していますが、ユーザのプロジェクトで使用する前に、製造環境以外の場所で十分にテストする必要があります。ユーティリティの機能がユーザの要件に適合しないことがあります。また、ユーティリティの欠陥が検出されて、プロジェクトで正しく機能されないことがあります。ユーティリティの欠陥を検出した場合は、ロックウェル・ソフトウェアの技術サポートまでお知らせください。弊社にて修正を行ないます。
http://www.software.rockwell.com/download/mmi/rsview32/misc/CALE_INS.EXE(ファイルサイズ:9.06MB)
Name: "ActivityLog Path"
Value: "C:"
Section: HKEY_LOCAL_MACHINE
Key: \Software\Rockwell Software\Client Activity Log Export\Settings
Value: Dword:00000001
再コネクションの試みおよび間隔(単位:分)を変更するには、これらの設定を定義するレジストリエントリは、以下のとおりです。
Name: "Reconnection Interval"
Value: Dword:00000001
Name: "Reconnection Attempts"
Value: Dword:00000003
法的な注意事項: |
ロックウェル・ソフトウェア(RSI) のKnowledgebaseに記載された情報は、いかなる保証もなく「そのままで」提供されます。RSI は、明示または暗示されたいかなる保証も負いません。また、RSI がそのような損害の可能性を忠告していた場合でも、直接、間接、偶発的、必然的な利益の損失または損害を含むいかなる損害についても、RSI は責任を負いません。
©2000 Rockwell Software Inc. All rights reserved.
