LotusScript のプログラムを作成すると、開発中やデバッグ中はもちろん、運用中の DB でもどのように処理が行われたのか確認したくなります。手段としては、
- デバッガで処理状況を確認
- MessageBox で処理状況を表示
- Print 文で処理状況を表示
- 実行ログを出力
というような方法が考えられます。主に、1 と 2 は開発中、3 と 4 は運用中でも利用できる方法となりますね。
今回は、4 の実行ログの出力方法についてまとめます。
NotesLog クラス
LotusScript の標準クラスには NotesLog クラスが装備されています。これを利用すると、簡単に実行ログを残すことができます。
このクラスは、出力先が選べることが特徴です(同時に複数指定可能)。
- ノーツアプリケーション(データベース)
- メール
- テキストファイル(ローカル実行の場合)
- エージェントログ(エージェントの場合)
利用の流れ
NotesLog クラスの基本的な利用方法は次の通りです。
Sub Initialize 'ログを作成 Dim nlog As New NotesLog("NotesLog クラスのテスト") 'ログをオープン(出力先を指定) Call nlog.OpenAgentLog() '通常のログを出力 Call nlog.LogAction("通常のメッセージ...") 'エラーログの出力 Call nlog.LogError(1000, "エラーが発生しました!") '最後にログをクローズ Call nlog.Close() End Sub |
NotesLog オブジェクトを新規作成した後、ログをオープンします。このオープンのメソッドが出力先ごとに存在し、このサンプルではエージェントログを指定しています。複数のログを同時にオープンすることで、同時に複数出力できます。
準備が整った後は、ログを出力します。LogAction は通常のログメッセージ、LogError はエラー用となります。
ログの出力が終わったら、Close メソッドでログの終了を宣言します。
では、ログの出力先の指定であるオープンのメソッドを順に確認しましょう。
◇ ノーツアプリケーション(データベース)に出力
OpenNotesLog メソッドは、ノーツデータベースにログを文書として出力します。引数は出力するデータベース(サーバとファイルパス)で、指定すると、その DB 内にノーツの文書として出力します。
Call notesLog.OpenNotesLog( server$, dbfile$ ) |
出力先のデータベースは、テンプレートの『エージェントログ』から作成しておきます。
ログが出力されると、ビューに文書が追加されます。この機能をうまく使えばログの一元管理が可能ですね。
ところで、実際の出力結果は次のようになりました。
まず、ログの出力ごとに文書が生成されるようです。先のコードを実行したところ、通常のログとエラーログは別文書となりました(1回の実行で2文書作成)。
また、ログタイプにはどちらも × が表示されており、両方がエラーだったように見えます。ビューの設計を確認したところ、"Action" でなければ × となるようになっています。
ところが、出来上がった文書は、”アクション” となっています。これは明らかに日本語化のバグですね...。このままではあまりに悲しいので、テンプレートからの引継ぎをせずに、ビューを修正しておきましょう。
◇ メール
OpenMailLog メソッドを使えば、ログをメールで送信することができます。引数は、メールの宛先と件名となります。
Call notesLog.OpenMailLog( recipientsV, subject$ ) |
実行すると次のようにメールが送信されます。メールの場合は一連のログが1通のメールとなって送信される仕様のようですね。
◇ テキストファイル
OpenFileLog メソッドでは、ログをローカルのテキストファイルとして保存します。引数は、出力するテキストファイルの名前(パス含む)となります。
Call notesLog.OpenFileLog( path$ ) |
実行すると引数で指定したファイルにログが出力されます。
◇ エージェントログ
LotusScript で記述されたエージェントの場合、OpenAgentLog メソッドを使えば、ログをエージェントログに出力することができます。
Call notesLog.OpenAgentLog |
実行が終了した後、エージェントの右クリックメニューより[ログの表示]を選択することで確認できます。このログでは最後の実行分のログしか確認できない点に注意が必要ですね。
0 件のコメント:
コメントを投稿