このチュートリアルでは、カスタム ログ リスナーを作成する方法と、My.Application.Log オブジェクトの出力を待機するように構成する方法を説明します。
作業の開始
ログ リスナーは TraceListener クラスを継承する必要があります。
リスナーを作成するには
アプリケーションで、SimpleListener という名前のクラスを、TraceListener を継承して作成します。
Public Class SimpleListener Inherits System.Diagnostics.TraceListener <Security.Permissions.HostProtection(Synchronization:=True)> Public Overloads Overrides Sub Write(ByVal message As String) MsgBox("Write: " & message) End Sub <Security.Permissions.HostProtection(Synchronization:=True)> Public Overloads Overrides Sub WriteLine(ByVal message As String) MsgBox("WriteLine: " & message) End Sub End Class基本クラスのために必要な Write メソッドと WriteLine メソッドでは、MsgBox を呼び出してその入力を表示します。
HostProtectionAttribute 属性を Write メソッドと WriteLine メソッドに適用し、基本クラスのメソッドと属性を一致させます。HostProtectionAttribute 属性により、コードを実行するホストは、そのコードがホスト保護の同期を示していることを確認できます。
[!メモ]
HostProtectionAttribute 属性が有効なのは、共通言語ランタイムをホストし、ホスト保護を実装するアンマネージ アプリケーションにおいてのみです (SQL Server など)。
このログ リスナーを My.Application.Log に確実に使用させるためには、ログ リスナーが属するアセンブリに厳密な名前を指定する必要があります。
次に示すのは、厳密な名前を指定したログ リスナー アセンブリを作成する手順の概要です。詳細については、「厳密な名前付きアセンブリの作成と使用」を参照してください。
ログ リスナー アセンブリに厳密な名前を指定するには
ソリューション エクスプローラーでプロジェクトを選択します。[プロジェクト] メニューの [プロパティ] をクリックします。詳細については、「プロジェクト デザイナーの概要」を参照してください。
[署名] タブをクリックします。
[アセンブリの署名] ボックスを選択します。
[厳密な名前のキー ファイルを選択してください] ボックスの一覧の [<新規作成>] を選択します。
[厳密な名前キーの作成] ダイアログ ボックスが表示されます。
[キー ファイル] ボックスでキー ファイルの名前を指定します。
[パスワードの入力] ボックスと [パスワードの確認] ボックスにパスワードを入力します。
[OK] をクリックします。
アプリケーションをビルドし直します。
リスナーの追加
アセンブリに厳密な名前を付けたので、My.Application.Log がログ リスナーを使用するように、リスナーの厳密な名前を確認する必要があります。
厳密な名前を指定された型の形式は次のとおりです。
<型名>, <アセンブリ名>, <バージョン番号>, <カルチャ>, <厳密な名前>
リスナーの厳密な名前を確認するには
次のコードは、厳密な名前を指定された SimpleListener の型名を確認する方法を示しています。
Public Sub DisplaySimpleListenerStrongName() Dim t As Type = GetType(SimpleListener) MsgBox(t.FullName & ", " & t.Assembly.FullName) End Sub型の厳密な名前はプロジェクトによって異なります。
厳密な名前を確認できたら、このリスナーを My.Application.Log のログ リスナーのコレクションに追加できます。
リスナーを My.Application.Log に追加するには
ソリューション エクスプローラーで app.config を右クリックし、[開く] をクリックします。
または
app.config ファイルがある場合は、次の操作を行います。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、[アプリケーション構成ファイル] をクリックします。
[追加] をクリックします。
<sources> セクション内にある、name 属性が "DefaultSource" の <source> セクションで、<listeners> セクションを見つけます。<sources> セクションは、最上位の <configuration> セクション内の <system.diagnostics> セクションにあります。
<listeners> セクションに次の要素を追加します。
<add name="SimpleLog" />最上位の <configuration> セクション内の <system.diagnostics> セクションで、<sharedListeners> セクションを見つけます。
その <sharedListeners> セクションに次の要素を追加します。
<add name="SimpleLog" type="SimpleLogStrongName" />SimpleLogStrongName の値をリスナーの厳密な名前に変更します。
参照
処理手順
方法: ログ メッセージを書き込む (Visual Basic)
チュートリアル: My.Application.Log による情報の書き込み先の変更 (Visual Basic)
関連項目
Microsoft.VisualBasic.Logging.Log