項目
ログの出力
概要
ログの出力は、面倒なので下記のようなクラスを用意して、汎用的に利用しています。
仕様によって、書き換えたり、使う場所を変えたりしています。
例
Option Compare Database
Option Explicit
'--------------------------------------------------------
' 名称 : logTest
'
' 機能 : ログの出力テスト
'--------------------------------------------------------
Sub logTest()
On Error GoTo errHandler
'インスタンス生成
Dim log As New Logger
'ログの出力
log.writeLog "logのテスト", "出力される内容"
'エラー発生
Err.Raise 513, "err test", "error!!!!"
exitHandler:
'インスタンスの開放
Set log = Nothing
Exit Sub
errHandler:
'エラー時ログの出力
log.writeLog "エラー", Err.Number & ":" & Err.Description
Resume exitHandler
End Sub
クラスモジュール(Logger)の内容
Option Explicit
'*******************************************************************
' 名称 : Logger
' 機能 : mdbと同じ場所に「アプリケーションタイトル_YYYYMMDD.log」の形式でログ出力
'*******************************************************************
'-------------------------------------------------------------------
' メンバ変数定義
'-------------------------------------------------------------------
Private fileNumber As Long
Private filePath As String
'-------------------------------------------------------------------
' プロパティ
'-------------------------------------------------------------------
Public Property Get path() As String
path = filePath
End Property
'-------------------------------------------------------------------
' 名 称 : writeLog
' 機 能 : ログ出力
' 引 数 : processing:処理名
' message :出力メッセージ
' append : True append ディフォルトでアペンド
' 戻 値 : なし
'-------------------------------------------------------------------
Public Sub writeLog(ByVal processing As String, _
ByVal message As String, _
Optional ByVal append As Boolean = True)
'ファイルハンドル
fileNumber = FreeFile
'オープン
If append Then
Open filePath For Append As #fileNumber
Else
Open filePath For Output As #fileNumber
End If
'出力フォーマット作成
Dim buf As String
buf = Format(Now, "yyyy/mm/dd HH:mm:ss") '時間
buf = buf & " [" & processing & "] " '処理
buf = buf & " : " & message 'メッセージ
'出力
Print #fileNumber, buf
'クローズ
Close #fileNumber
End Sub
'-------------------------------------------------------------------
' 名 称 : Class_Initialize
' 機 能 : コンストラクタ
' 引 数 : なし
' 戻 値 : なし
'-------------------------------------------------------------------
Private Sub Class_Initialize()
'インスタンス生成時ログファイルのパスを設定する
Dim appPath As String
Dim appTitle As String
appPath = CurrentProject.path
appTitle = CurrentProject.Name & "_" & Format(Date, "yyyymmdd")
If Right$(appPath, 1) <> "\" Then appPath = appPath & "\"
'「アプリケーションタイトル_YYYYMMDD.log」
filePath = appPath & appTitle & ".log"
End Sub