CoreLog クラスは最低限の機能しか実装していないため、誰が書いても似たようなコードになると考えます。 著作権等を主張することはありませんので、自由にご利用ください。
なにか不具合を発見された方、より良いコードを書かれた方、フィードバックいただければ嬉しいです。
もし現在の実装で、物足りなく思える方、現在のクラスを継承して拡張してみるのがお勧めです。
CoreLog クラス自体を書き換えてしまってもかまいませんが、その場合は、クラス全体をテストする必要があります。 継承を使えば、安定した実装をベースに、自分の拡張部分のみをテストすればOKです。
例えば以下は、ログ文書に読者フィールドを設定するメソッド setReader() を追加した例になります。
Public Class MyCoreLog As CoreLogCoreLog は引数付きのコンストラクタを使用しているため、継承した MyCoreLog クラスでもコンストラクタの定義が必要なことに注意してください。
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
また以下は、10行以上のログ出力がある場合、いったんログ文書を保存する拡張例になります。
Public Class MyCoreLog As CoreLogこの例では、CoreLog の logText() メソッドを上書き(オーバーライド)しているのがポイントです。 元の CoreLog クラスの logText() メソッドをまず実行したうえで、独自の処理を追加しているのがわかるとおもいます。
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 クラスにマージさせて共有していきたいと考えています。