VB2005でログを録る

デバッグ用のログやエラー時のログを録るためlog4netを調べていたのですが、 My.Application.Logを使用して様々な出力先にログを録ることができるようです。

My.Application.Logで使用できるログの出力先には次のような物が用意されています。

  • テキストファイル(FileLogTraceListener)
  • イベントログ(EventLogTraceListener)
  • XMLファイル(XmlWriterTraceListener)
  • 標準出力(ConsoleTraceListener)

その他にもTextWriterTraceListenerなどがあるようです。また、トレース出力またはデバッグ出力をストリーム ライタ などのテキスト ライタや、ファイル ストリームなどに出力するDelimitedListTraceListenerクラスもあります。

ログの出力は、大きく分けて2つの部分から構成されます。

1つは、ログの出力先や出力するログのフィルタなどを 定義するapp.config

もうひとつは、メッセージを書き込むためのMy.Application.Logクラスです。

ログの定義

出力先などのログの定義は、アプリケーション構成ファイルに設定します。ソリューションエクスプローラーで app.configが存在しない場合、[新しい項目の追加]からアプリケーション構成ファイルを選択しapp.configを追加します。

sourceタグでname属性がDefaultSource内にあるlistenersタグに出力先となるリスナを登録します。 (必要な物のみ)

<add name="FileLog" />
<add name="EventLog" />
<add name="Delimited" />
<add name="XmlWriter" />
<add name="Console" />

吐き出すログのレベルなどを設定するには、switchesタグに設定します。次の例の場合、Information かそれ以上 の場合となります。

<switches>
    <add name="DefaultSwitch" value="Information" />
</switches>

sharedListenersタグにリスナ毎の設定を記述します。

<add name="FileLog"
   type="Microsoft.VisualBasic.Logging.FileLogTraceListener, 
         Microsoft.VisualBasic, Version=8.0.0.0, 
         Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
   initializeData="FileLogWriter">
</add>
<add name="EventLog"
   type="System.Diagnostics.EventLogTraceListener, 
         System, Version=2.0.0.0, 
         Culture=neutral, PublicKeyToken=b77a5c561934e089"
   initializeData="sample application">
</add>
<add name="Delimited" 
   type="System.Diagnostics.DelimitedListTraceListener, 
         System, Version=2.0.0.0, 
         Culture=neutral, PublicKeyToken=b77a5c561934e089"
   initializeData="c:\temp\sampleDelimitedFile.txt"
   delimiter=";;;"
   traceOutputOptions="DateTime">
</add>
<add name="XmlWriter"
   type="System.Diagnostics.XmlWriterTraceListener, 
         System, Version=2.0.0.0, 
         Culture=neutral, PublicKeyToken=b77a5c561934e089"
   initializeData="c:\temp\sampleLogFile.xml">
</add>
<add name="Console"
   type="System.Diagnostics.ConsoleTraceListener, 
         System, Version=2.0.0.0, 
         Culture=neutral, PublicKeyToken=b77a5c561934e089"
   initializeData="true">
</add>

ログを吐くコード

My.Application.LogのWriteEntryメソッドを使用することでログにメッセージを吐きます。

My.Application.Log.WriteEntry(メッセージ[,ログレベル[,識別子]])

ログレベルには、次の物が用意されています。(例:TraceEventType.Information)

  • Information
  • Warning
  • Error
  • Critical
  • Start
  • Stop
  • Suspend
  • Resume
  • Verbose
  • Transfer