チュートリアル : My.Application.Log による情報の書き込み先の変更
更新 : 2007 年 11 月
My.Application.Log オブジェクトおよび My.Log オブジェクトを使用すると、アプリケーション内で発生したイベントに関する情報をログに記録できます。このチュートリアルでは、既定の設定をオーバーライドして、Log オブジェクトによる書き込み先を他のログ リスナに変更する方法を示します。
前提条件
Log オブジェクトは、複数のログ リスナに情報を書き込むことができます。ログ リスナの構成を変更する前に、現在の構成を確認する必要があります。詳細については、「チュートリアル : My.Application.Log による情報の書き込み先の確認」を参照してください。
必要に応じて、「方法 : イベント情報をテキスト ファイルに書き込む」および「方法 : アプリケーション イベント ログに書き込む」も参照してください。
リスナを追加するには
ソリューション エクスプローラで app.config を右クリックし、[開く] をクリックします。
または
app.config ファイルがない場合は、次の操作を行います。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、[アプリケーション構成ファイル] をクリックします。
[追加] をクリックします。
<sources> セクション内にある、name 属性が "DefaultSource" の <source> セクションで、<listeners> セクションを見つけます。<sources> セクションは、最上位の <configuration> セクション内の <system.diagnostics> セクションにあります。
その <listeners> セクションに次の要素を追加します。
<!-- Uncomment to connect the application file log. --> <!-- <add name="FileLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="EventLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="Delimited" /> --> <!-- Uncomment to connect the XML log. --> <!-- <add name="XmlWriter" /> --> <!-- Uncomment to connect the console log. --> <!-- <add name="Console" /> -->
Log のメッセージを受け取らせるログ リスナをコメントから外します。
最上位の <configuration> セクション内の <system.diagnostics> セクションで、<sharedListeners> セクションを見つけます。
その <sharedListeners> セクションに次の要素を追加します。
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" initializeData="FileLogWriter" /> <add name="EventLog" type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="sample application"/> <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 name="XmlWriter" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\sampleLogFile.xml" /> <add name="Console" type="System.Diagnostics.ConsoleTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="true" />
app.config ファイルの内容は次の XML のようになります。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> <!-- Uncomment to connect the application file log. --> <!-- <add name="FileLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="EventLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="Delimited" /> --> <!-- Uncomment to connect the XML log. --> <!-- <add name="XmlWriter" /> --> <!-- Uncomment to connect the console log. --> <!-- <add name="Console" /> --> </listeners> </source> </sources> <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 name="EventLog" type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="sample application"/> <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 name="XmlWriter" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\sampleLogFile.xml" /> <add name="Console" type="System.Diagnostics.ConsoleTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="true" /> </sharedListeners> </system.diagnostics> </configuration>
リスナを再構成するには
<sharedListeners> セクションで、リスナの <add> 要素を見つけます。
type 属性はリスナの型の名前を表します。この型は TraceListener クラスを継承する必要があります。正しい型が確実に使用されるよう、型名には厳密な名前を使用します。詳細については、後述の「厳密な名前を指定された型を参照するには」を参照してください。
使用できる型のいくつかを以下に示します。
Microsoft.VisualBasic.Logging.FileLogTraceListener リスナ。ファイル ログに書き込みます。
System.Diagnostics.EventLogTraceListener リスナ。initializeData パラメータで指定された、コンピュータのイベント ログに情報を書き込みます。
System.Diagnostics.DelimitedListTraceListener リスナおよび System.Diagnostics.XmlWriterTraceListener リスナ。initializeData パラメータで指定されたファイルに書き込みます。
System.Diagnostics.ConsoleTraceListener リスナ。コマンド ライン コンソールに書き込みます。
他の型のログ リスナが情報を書き込む先については、その型のドキュメントを参照してください。
アプリケーションは、ログ リスナ オブジェクトを作成するときに、コンストラクタのパラメータとして initializeData 属性を渡します。initializeData 属性の意味はトレース リスナによって異なります。
アプリケーションは、ログ リスナを作成した後で、リスナのプロパティを設定します。これらのプロパティは、<add> 要素の他の属性で定義されています。特定のリスナのプロパティの詳細については、そのリスナの型のドキュメントを参照してください。
厳密な名前を指定された型を参照するには
ログ リスナとして正しい型を確実に使用するために、完全修飾型名と厳密な名前のアセンブリ名を使用する必要があります。厳密な名前を指定された型の構文は次のとおりです。
<type name>, <assembly name>, <version number>, <culture>, <strong name>
次のコード例は、完全修飾された型の厳密な名前を確認する方法を示します。この例では "System.Diagnostics.FileLogTraceListener" です。
Public Sub DisplayStrongName() Dim t As Type = GetType(Logging.FileLogTraceListener) MsgBox(t.FullName & ", " & t.Assembly.FullName) End Sub
次に示すのが出力です。これを使用して、前述の「リスナを追加するには」の手順で示した方法で、厳密な名前を指定された型を一意に参照できます。
Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a