このチュートリアルでは、カスタム ログ リスナーを作成し、 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
でログ リスナーが使用されるようにするには、ログ リスナーを含むアセンブリに厳密な名前を付ける必要があります。
次の手順では、厳密な名前のログ リスナー アセンブリを作成するための簡単な手順をいくつか示します。 詳しくは、「厳密な名前付きアセンブリの作成と使用」をご覧ください。
ログ リスナー アセンブリに厳密な名前を付ける
ソリューション エクスプローラーでプロジェクトを選択します。 [ プロジェクト ] メニューの [ プロパティ] を選択します。
[署名] タブをクリックします。
[ アセンブリに署名する ] ボックスを選択します。
[厳密な名前のキー ファイルの選択] ドロップダウン リストから <New> を選択します。
[ 厳密な名前キーの作成 ] ダイアログ ボックスが開きます。
[キー ファイル名] ボックスにキー ファイルの名前を指定 します。
[パスワードの入力] ボックスと [パスワードの確認] ボックスにパスワードを入力します。
OK をクリックします。
アプリケーションをリビルドします。
リスナーの追加
アセンブリに厳密な名前が付いているので、 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 にリスナーを追加するには
ソリューション エクスプローラーで app.config を右クリックし、[開く] を選択します。
-又は-
app.config ファイルがある場合:
[ プロジェクト ] メニューの [ 新しい項目の追加] を選択します。
[ 新しい項目の追加 ] ダイアログ ボックスで、[ アプリケーション構成ファイル] を選択します。
追加をクリックします。
<sources>
セクションにあるname
属性 "DefaultSource" を持つ<source>
セクションで、<listeners>
セクションを見つけます。<sources>
セクションは、<system.diagnostics>
セクションの最上位の<configuration>
セクションにあります。この要素を
<listeners>
セクションに追加します。<add name="SimpleLog" />
[
<sharedListeners>
] セクションの最上位レベルの [<system.diagnostics>
] セクションで、<configuration>
セクションを見つけます。この要素をその
<sharedListeners>
セクションに追加します。<add name="SimpleLog" type="SimpleLogStrongName" />
SimpleLogStrongName
の値をリスナーの厳密な名前に変更します。
こちらも参照ください
.NET