チュートリアル : カスタム ログ リスナの作成
更新 : 2007 年 11 月
このチュートリアルでは、カスタム ログ リスナを作成する方法と、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 の値をリスナの厳密な名前に変更します。
参照
処理手順
チュートリアル : My.Application.Log による情報の書き込み先の変更