2006年08月19日

ログ生成用クラス (3)

ログ生成用クラス (2) で使い方をご紹介した CoreLog クラスの実装を順にみていきましょう。 まずは最低限ということで、内部変数コンストラクタ 部分のみを抜き出してみます。
Public Class CoreLog
Private traceMaxLevel As Integer
Private logDoc As NotesDocument
Private itemDetail As NotesRichTextItem
Private itemTrace As NotesRichTextItem
Private timeStart As NotesDateTime

' ---- Constractor/Destractor methods ----

Sub New(doc As NotesDocument, level%, logType$)
Dim session As New NotesSession

If doc Is Nothing Then
Set Me.logDoc =
session.CurrentDatabase.CreateDocument
Me.logDoc.Form = "fLogCore"
Else
Set Me.logDoc = doc
End If
Set Me.timeStart = New NotesDateTime(Now())
Me.logDoc.Start = Me.timeStart.LSLocalTime
Me.logDoc.Executant = session.UserName
Me.logDoc.Status = "pending"
Me.logDoc.Type = logType$
Set Me.itemDetail =
createRichtextMember(logDoc, "Detail")
Set Me.itemTrace =
createRichtextMember(logDoc, "Trace")
Me.setTraceLevel(level%)
End Sub

Sub Delete
Delete Me.timeStart
End Sub

End Class

通常は New の第一引数には Nothing を指定して、ログ文書を自動作成します。 もし既存の文書にログ情報を書き出したい場合には、その文書を指定してください。

timeStart を設定する部分以降は、わりと一般的なログ文書の初期化ロジックだとおもいます。 Start には開始時間、Executant には実行者、Status は状態で初期値 "pending(実行中)" を設定しています。

setTraceLevel() メソッドの紹介は次回ですが、単に 「Me.traceMaxLevel = level%」 という動作だと理解いただければ OK です。

使用されている createRichtextMember() という Private メソッドを以下に抜き出しておきます。
  ' ---- Private methods ----

Private Function createRichtextMember
(doc As NotesDocument, itemName$)
As NotesRichTextItem
Dim item As NotesRichTextItem

Set item = doc.GetFirstItem(itemName$)
If item Is Nothing Then
Set item = doc.CreateRichTextItem(itemName$)
Elseif item.Type <> RICHTEXT Then
tmpText$ = item.Text
Call doc.RemoveItem(itemName$)
Set item = doc.CreateRichTextItem(itemName$)
Call item.AppendText(tmpText$)
End If

Set createRichtextMember = item
End Function
既存の文書を指定されたときを想定したもので、単にリッチテキストを生成するのではなく、既存のフィールドがあればリッチテキストに変換するようにしています。 リッチテキスト形式にするのは、テキスト形式ではサイズ制限があるためです。

さて次回も引き続き、 CoreLog クラスの実装をみていきましょう。
posted by yamachan at 00:02| Comment(0) | TrackBack(0) | my設計パターン
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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