VB6 ロガーActiveX DLL
VB6用 の ログ出力するための ActiveX DLL です。
弊社では、デバッグ用ツールとしてログ出力用のクラスモジュールを作成し、長年使用してきました。

VB6環境もすっかり枯れてきましたが、個人ベースではまだまだ現役のようです。
そこで、クラスモジュールを ActiveX DLL化して公開することにしました。

公開メンバと機能
オブジェクト・ブラウザ
p_strIN 固定文字列 " [▽IN ] "
p_strOUT 固定文字列 " [△OUT] "
pS_EnvInit ログ環境の初期化メソッド
pS_Logging ログ出力メソッド

実質、「pS_EnvInit」と「pS_Logging」メソッドの2個だけです。

基底クラスには、多くのプロパティとメソッドを実装してありますが
(改造の繰り返しの結果)、公開するにはこの2個で十分と判断し
て、今回、クラスモジュールにラッパーをかけて簡略化(使いやすく)
したうえでフリーソフトとして公開しております。


【 pS_EnvInit メソッド の引数 】
ByVal strPath_I As String ログ出力先パス
空文字の場合は、DLLのパス下の \Log フォルダに出力
出力先のフォルダが存在しなくても自動で作成する
ByVal strName_I As String
ログファイル名(拡張子は付加しないこと)
※自動的に ".Log" を付加
Optional ByVal blnDairy_I As Boolean = True
True =日付(yyyymmdd)をログファイル名の先頭に付加
Optional ByVal lngSize_I As Long = 1000000
ログファイルのサイズ(Byte単位)
Optional ByVal intTransition_I As Integer = 10
ログの履歴数


【 pS_Logging メソッド の引数 】
ByVal strLogText_I As String ロギング文字列
自動的に 日時を付加
空文字の場合は、日時のみを出力
※前後の半角空白は強制的にTrimする
Optional ByVal blnStacking_I As Boolean = False False=スタック分もログ出力してスタックを空にする
True =ロギング文字列をメモリ上にスタックしておく
この機能は、昔の非力なPCでデバッグする際に、ログ出力のI/OにCPUパワーを食われてしまい正確なデバッグができなかったからです。
※通信などのデバッグなど

スタック数の上限は 32000個 です。
現在のPCであれば、スタック機能はよほどでない限り必要ないでしょう。


使用方法
参照設定
とりあえず使うには、メニュー「プロジェクト(P)」
の「参照設定」を開き、「参照(B)」ボタンで
    FtsLoggerVB6.DLL
を指定します。

恒常的に、若しくはどのプロジェクトでも使い
たい場合は、
    regsvr32.exe
などでレジストリに登録するなど工夫して下さ
い。


【 サンプル 】
新規プロジェクトで、上記参照設定を施した後、フォームを新規作成します。
フォーム上にコマンドボタンを1個配置したら、下記を参考にして下さい。
※インデントのために全角空白を埋め込んでいますので、コピー&ペーストする場合はご注意ください。
Option Base 0
Option Explicit
Option Compare Binary

'********** 定数設定
Private Const mC_strMYNAME As String = "Form1"

'--- ログ用インスタンス
Private mDLL_Log As New ftsloggervb6.FtsLogger

Private Sub Form_Initialize()

  '--- ログ環境の設定(パスと名称を指定、残りは規定値)
  Call mDLL_Log.pS_EnvInit( _
           App.Path & "\Log", _
           "LogDllTest" _
           )

End Sub

Private Sub Form_Load()
  '---+----+----+----+----+----+----+----+----+----+----+
  Const C_strMYNAME As String = mC_strMYNAME & ":" & "Form_Load"
  Dim strLogMsg As String
  strLogMsg = C_strMYNAME & mDLL_Log.p_strIN
  Call mDLL_Log.pS_Logging(strLogMsg)
  '---+----+----+----+----+----+----+----+----+----+----+

  '---+----+----+----+----+----+----+----+----+----+----+
  strLogMsg = String(5, "-") & "変数の初期化 処理中・・・" & vbCrLf _
           & Space(20) & "その1" & vbCrLf _
           & Space(20) & "その2" & vbCrLf _
           & Space(20) & "その3"
  Call mDLL_Log.pS_Logging(strLogMsg)
  '---+----+----+----+----+----+----+----+----+----+----+

  '---+----+----+----+----+----+----+----+----+----+----+
  strLogMsg = C_strMYNAME & mDLL_Log.p_strOUT
  Call mDLL_Log.pS_Logging(strLogMsg)
  '---+----+----+----+----+----+----+----+----+----+----+

End Sub

Private Sub Form_Terminate()

  Set mDLL_Log = Nothing

End Sub

Private Sub Form_Unload(Cancel As Integer)
  '---+----+----+----+----+----+----+----+----+----+----+
  Const C_strMYNAME As String = mC_strMYNAME & ":" & "Form_Unload"
  Dim strLogMsg As String
  strLogMsg = C_strMYNAME & mDLL_Log.p_strIN
  Call mDLL_Log.pS_Logging(strLogMsg)
  '---+----+----+----+----+----+----+----+----+----+----+

  '---+----+----+----+----+----+----+----+----+----+----+
  strLogMsg = String(5, "-") & "後処理中・・・"
  Call mDLL_Log.pS_Logging(strLogMsg)
  '---+----+----+----+----+----+----+----+----+----+----+

  '---+----+----+----+----+----+----+----+----+----+----+
  strLogMsg = C_strMYNAME & mDLL_Log.p_strOUT
  Call mDLL_Log.pS_Logging(strLogMsg)
  '---+----+----+----+----+----+----+----+----+----+----+
End Sub

Private Sub Command1_Click()
  '---+----+----+----+----+----+----+----+----+----+----+
  Const C_strMYNAME As String = mC_strMYNAME & ":" & "Command1_Click"
  Dim strLogMsg As String
  strLogMsg = C_strMYNAME & mDLL_Log.p_strIN
  Call mDLL_Log.pS_Logging(strLogMsg)
  '---+----+----+----+----+----+----+----+----+----+----+

  Static s_intCnt As Integer
  s_intCnt = s_intCnt + 1

  '---+----+----+----+----+----+----+----+----+----+----+
  strLogMsg = String(5, "-") & "ボタンの押下回数 = " & CStr(s_intCnt)
  Call mDLL_Log.pS_Logging(strLogMsg)
  '---+----+----+----+----+----+----+----+----+----+----+

  '---+----+----+----+----+----+----+----+----+----+----+
  strLogMsg = C_strMYNAME & mDLL_Log.p_strOUT
  Call mDLL_Log.pS_Logging(strLogMsg)
  '---+----+----+----+----+----+----+----+----+----+----+
End Sub


「LogDllTest」ログの出力例
※ログ出力ファイル名 = 20101101LogDllTest.Log
2010/11/01 16:46:28 Form1:Form_Load[▽IN ]
2010/11/01 16:46:28 -----変数の初期化 処理中・・・
              その1
              その2
              その3
2010/11/01 16:46:28 Form1:Form_Load[△OUT]
2010/11/01 16:46:31 Form1:Command1_Click[▽IN ]
2010/11/01 16:46:31 -----ボタンの押下回数 = 1
2010/11/01 16:46:31 Form1:Command1_Click[△OUT]
2010/11/01 16:46:33 Form1:Command1_Click[▽IN ]
2010/11/01 16:46:33 -----ボタンの押下回数 = 2
2010/11/01 16:46:34 Form1:Command1_Click[△OUT]
2010/11/01 16:46:35 Form1:Command1_Click[▽IN ]
2010/11/01 16:46:35 -----ボタンの押下回数 = 3
2010/11/01 16:46:35 Form1:Command1_Click[△OUT]
2010/11/01 16:46:39 Form1:Command1_Click[▽IN ]
2010/11/01 16:46:39 -----ボタンの押下回数 = 4
2010/11/01 16:46:39 Form1:Command1_Click[△OUT]
2010/11/01 16:46:41 Form1:Command1_Click[▽IN ]
2010/11/01 16:46:41 -----ボタンの押下回数 = 5
2010/11/01 16:46:41 Form1:Command1_Click[△OUT]
2010/11/01 16:46:43 Form1:Form_Unload[▽IN ]
2010/11/01 16:46:43 -----後処理中・・・
2010/11/01 16:46:43 Form1:Form_Unload[△OUT]
2010/11/01 16:46:43 ***** cls_FtsLogger:Class_Terminate *****


ダウンロード


お問い合わせはこちらから