スポンサーサイト

--年--月--日 --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

NotesLog を使ったエージェントの開始/終了の記録

2014年09月03日 21:56

Domino サーバー上で実行するエージェントが多数あるとします。各エージェントの開始、終了は Domino サーバーのコンソールログに記録されます。それぞれのエージェントの開始時刻、終了時刻を調べる場合は、コンソールログでそれぞれのエージェントの動作を確認する必要があります。

エージェントの動作に関してもっと簡単に確認する方法はないのでしょうか?
それぞれのエージェントで NotesLog (LotusScript)、Log (Java) クラスを使った追加の記述することで可能です。

以下、LotusScript の例で説明します。
エージェントの中で print 文を記述することで、Domino サーバーの定期実行エージェントでは print 文の出力がサーバーコンソールに書かれます。この print 文の出力とは別に、NotesLog クラスで alog4.ntf から作られたデータベースに対して書き込みを行う事が可能です。

エージェントの開始、終了に関して NotesLog#LogAction メソッドで明示的に書き込みを行う事で、エージェントの開始、終了を後で簡単に確認できます。

この例では AgentLog.nsf というデータベースに記録を行っています。複数のエージェントで同じ処理を行う事で、AgentLog.nsf に書かれた内容を見れば、各エージェントの開始、終了に関する情報を確認できます。

%REM
Description: Example of using NotesLog class
%END REM
Option Public
Option Declare

Sub Initialize
'Agent log
1: Dim logDB As New NotesLog("AgentLog testing")
2: Call logDB.Opennoteslog("", "AgentLog.nsf")

3: logDB.Logaction("Agent started")

'エージェント本体の処理を行う

4: logDB.Logaction("Agent finished")
5: Call logDB.Close()
End Sub



以下、各行の動作を説明します。

1: NotesLog クラスを使うには最初に NotesLog クラスのインスタンスを作ります。
New NotesLog の引数には現在のエージェントを識別するための文字列を渡します。この値は書き込み先の AgentLog.nsf で "Agent Name" という列で使われます。

内容は何でも良いですが、エージェント A を実行する際はエージェント A、エージェント B を実行する際はエージェント B を行っている事がわかる内容としてください。

2: OpenNotesLog メソッドでログを書き込む先のデータベースを指定します。
※書き込み先のデータベースはテンプレート alog4.ntf から作られている必要があります。この例では既にデータベースが存在する前提で書かれています。

3&4: 記録したい文字列を LogAction メソッドで書きます。
この例ではエージェントが開始した、終了した旨をログに書いています。この行を書いた時刻は書き込み先のログで自動的に記録されますので、エージェントで現在時刻を書く必要はありません。

5: エージェントの終了時に作成した NotesLog のインスタンスをクローズします。

以上、ご活用ください。


コメント

    コメントの投稿

    (コメント編集・削除に必要)
    (管理者にだけ表示を許可する)

    トラックバック

    この記事のトラックバックURL
    http://hnagasim.blog8.fc2.com/tb.php/494-f9268395
    この記事へのトラックバック


    最新記事


    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。