2006年08月22日

ログ生成用クラス (6)

三回に分けて掲載した LotusScript コードを 20060822_CoreLog_v100.txt にまとめました。 使用する時は適当なスクリプトライブラリの Declarations セクションにでも貼りつけてください。

CoreLog クラスは最低限の機能しか実装していないため、誰が書いても似たようなコードになると考えます。 著作権等を主張することはありませんので、自由にご利用ください。

なにか不具合を発見された方、より良いコードを書かれた方、フィードバックいただければ嬉しいです。
もし現在の実装で、物足りなく思える方、現在のクラスを継承して拡張してみるのがお勧めです。

CoreLog クラス自体を書き換えてしまってもかまいませんが、その場合は、クラス全体をテストする必要があります。 継承を使えば、安定した実装をベースに、自分の拡張部分のみをテストすればOKです。

例えば以下は、ログ文書に読者フィールドを設定するメソッド setReader() を追加した例になります。
Public Class MyCoreLog As CoreLog

Public Sub setReader(fieldName$, value$)
Dim item As NotesItem

Set item = Me.logDoc.ReplaceItemValue(fieldName$, value$)
item.IsReaders = True
End Sub

Sub New(doc As NotesDocument, level%, logType$)
End Sub
End Class
CoreLog は引数付きのコンストラクタを使用しているため、継承した MyCoreLog クラスでもコンストラクタの定義が必要なことに注意してください。

また以下は、10行以上のログ出力がある場合、いったんログ文書を保存する拡張例になります。
Public Class MyCoreLog As CoreLog
Private saveCounter As Integer

Public Sub logText(message$)
CoreLog..logText(message$)

Me.saveCounter = Me.saveCounter + 1
If Me.saveCounter > 10 Then
Call saveLog()
Me.saveCounter = 0
End If
End Sub

Sub New(doc As NotesDocument, level%, logType$)
End Sub
End Class
この例では、CoreLog の logText() メソッドを上書き(オーバーライド)しているのがポイントです。 元の CoreLog クラスの logText() メソッドをまず実行したうえで、独自の処理を追加しているのがわかるとおもいます。

他にもいろいろ拡張方法は考えられます。 何か良いコードがありましたら、ぜひお知らせください。 便利そうなものは、CoreLog クラスにマージさせて共有していきたいと考えています。
posted by yamachan at 00:10| Comment(0) | TrackBack(0) | my設計パターン
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/1148871

この記事へのトラックバック