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