チュートリアル: カスタム ログ リスナーの作成 (Visual Basic)
このチュートリアルでは、カスタム ログ リスナーを作成する方法と、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