次の方法で共有


チュートリアル: カスタム ログ リスナーの作成 (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. [厳密な名前のキー ファイルの選択] ドロップダウン リストから <New> を選択します。

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

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

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

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

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

リスナーの追加

アセンブリに厳密な名前が付いているので、 My.Application.Log がログ リスナーを使用するようにリスナーの厳密な名前を決定する必要があります。

厳密に名前が付けられた型の形式は次のとおりです。

<type name>, <assembly name>, <version number>, <culture>, <strong name>

リスナーの厳密な名前を確認するには

  • 次のコードは、 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. <sources> セクションにある name 属性 "DefaultSource" を持つ <source> セクションで、<listeners> セクションを見つけます。 <sources> セクションは、<system.diagnostics> セクションの最上位の <configuration> セクションにあります。

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

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

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

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

    SimpleLogStrongNameの値をリスナーの厳密な名前に変更します。

こちらも参照ください