チュートリアル: カスタム ログ リスナーの作成 (Visual Basic)

このチュートリアルでは、カスタム ログ リスナーを作成する方法と、My.Application.Log オブジェクトの出力を待機するように構成する方法について説明します。

作業の開始

ログ リスナーは、TraceListener クラスから継承する必要があります。

リスナーを作成するには

  • アプリケーションで、TraceListener を継承する SimpleListener という名前のクラスを作成します。

    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 でログ リスナーが使用されるようにするには、ログ リスナーを含むアセンブリに厳密な名前を付ける必要があります。

次の手順では、厳密な名前付きのログ リスナー アセンブリを作成するための簡単な手順を示します。 詳しくは、「厳密な名前付きアセンブリの作成と使用」をご覧ください。

ログ リスナー アセンブリに厳密な名前を付けるには

  1. ソリューション エクスプローラーでプロジェクトを選択します。 [プロジェクト] メニューの [プロパティ] をクリックします。

  2. [署名] タブをクリックします。

  3. [アセンブリの署名] ボックスを選択します。

  4. [厳密な名前のキー ファイルを選択してください] ドロップダウン リストから [<新規作成>] を選びます。

    [厳密な名前キーの作成] ダイアログ ボックスが開きます。

  5. [キー ファイル名] ボックスで、キー ファイルの名前を指定します。

  6. [パスワードの入力] および [パスワードの確認入力] ボックスにパスワードを入力します。

  7. [OK] をクリックします。

  8. アプリケーションをリビルドします。

リスナーの追加

アセンブリに厳密な名前を付けたら、次はリスナーの厳密な名前を確認して、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 にリスナーを追加するには

  1. ソリューション エクスプローラー で app.config を右クリックし、 [開く] を選択します。

    \- または -

    app.config ファイルがある場合は、次の操作を行います。

    1. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

    2. [新しい項目の追加] ダイアログ ボックスで、 [アプリケーション構成ファイル] を選択します。

    3. [追加] をクリックします。

  2. <listeners> セクション内にある、 <source> 属性が "DefaultSource" の name セクションで、 <sources> セクションを見つけます。 <sources> セクションは、最上位の <system.diagnostics> セクション内の <configuration> セクションにあります。

  3. <listeners> セクションに次の要素を追加します。

    <add name="SimpleLog" />
    
  4. 最上位の <sharedListeners> セクション内の <system.diagnostics> セクションで、 <configuration> セクションを見つけます。

  5. その <sharedListeners> セクションに次の要素を追加します。

    <add name="SimpleLog" type="SimpleLogStrongName" />
    

    SimpleLogStrongName の値はリスナーの厳密な名前に置き換えてください。

関連項目