#3 から開始したライブラリ作成作業の続きです。今回はログの終了処理について紹介します。これで基本機能が完成です。
◇ ログの終了(LogClose 関数)
ライブラリ利用者とのインターフェースとなる関数はシンプルです。終了処理を行うサブ関数 xLogClose をコールするだけです。
Public Function LogClose() As Boolean Call xLogClose() End Function |
◇ ログ終了の本体
ログが初期化され出力中であるかをはじめに確認します。その後、ログの終了メッセージを記録し、終了時間、通常ログとエラーの件数を記録して文書を保存します。
Function xLogClose() As Boolean If xbIsInit = False Then Exit Function '終了処理 If xbIsOpen Then '処理終了メッセージの出力 Call PrintLog(|ログ出力の終了|) xndLog.LogEndTime = Now '処理時刻 xndLog.LogMessageCount = xlMessage '通常ログの件数 xndLog.LogErrorCount = xlError 'エラーログの件数 Call xndLog.Save(True, True) 'フラグリセット xbIsOpen = False Set xndLog = Nothing xLogClose = True End If End Function |
ログ文書の保存後は、xbIsOpen を False に設定、文書を開放して Private 変数を整えます。これでログの終了は完了です。
◇ Terminate の定義
不測の事態に備えて、スクリプトライブラリの Terminate を記述します。ライブラリが閉じるときログが記録中だった場合、ログを強制的に終了させます。
Sub Terminate If xbIsOpen Then 'Close できていない Call xPrintLog(True, xcsLibName & ": LogClose() が実行されずに終了しました...") Call xLogClose() End If End Sub |
これで LogClose() をコールし忘れた場合でも、ログが保存されます。また、Ctrl + Break で強制終了した場合にも対応できます。『LogClose() が実行されずに終了しました...』メッセージはエラーのフォントで表示させているので気づきやすくしています(エラー扱いではない)。
まとめ
このような共通部品では、安定性が重要となります。内部でエラーが起きないことはもちろんですが、想定外の使用に備えて、インターフェースとなる関数の最初でステータスのチェックを行っています。また、Terminate を活用して異常終了時でも、できる限りリカバリする点がポイントとなります。
これで、LotusScript 実行ログ出力の基本機能は完成です。次回は、このライブラリを利用して動作確認をします。
前回 | 共通部品にチャレンジ |
0 件のコメント:
コメントを投稿