My.Application.Log
オブジェクトとMy.Log
オブジェクトを使用すると、ログとトレース情報をログに簡単に書き込むことができます。
メッセージのログ記録方法
まず、メッセージの重大度は、ログの TraceSource プロパティの Switch プロパティで確認されます。 既定では、重大度 "Information" 以上のメッセージのみがトレース リスナーに渡され、ログの TraceListener
コレクションで指定されます。 次に、各リスナーは、メッセージの重大度をリスナーの Switch プロパティと比較します。 メッセージの重大度が十分に高い場合、リスナーはメッセージを書き出します。
次の図は、 WriteEntry
メソッドに書き込まれたメッセージが、ログのトレース リスナーの WriteLine
メソッドに渡される方法を示しています。
アプリケーションの構成ファイルを変更することで、ログとトレース リスナーの動作を変更できます。 次の図は、ログの各部分と構成ファイルの対応関係を示しています。
メッセージがログに記録される場所
アセンブリに構成ファイルがない場合、 My.Application.Log
オブジェクトと My.Log
オブジェクトは ( DefaultTraceListener クラスを介して) アプリケーションのデバッグ出力に書き込みます。 さらに、 My.Application.Log
オブジェクトは ( FileLogTraceListener クラスを介して) アセンブリのログ ファイルに書き込み、 My.Log
オブジェクトは ( WebPageTraceListener クラスを介して) ASP.NET Web ページの出力に書き込みます。
デバッグ出力は、デバッグ モードでアプリケーションを実行するときに、Visual Studio の [出力] ウィンドウで表示できます。 [出力] ウィンドウを開くには、[デバッグ] メニュー項目をクリックし、Windows をポイントして、[出力] をクリックします。 [出力] ウィンドウで、[出力の表示] ボックスから [デバッグ] を選択します。
既定では、 My.Application.Log
はユーザーのアプリケーション データのパスにログ ファイルを書き込みます。
DefaultFileLogWriter オブジェクトの FullLogFileName プロパティからパスを取得できます。 そのパスの形式は次のとおりです。
BasePath
\CompanyName
\ProductName
\ProductVersion
BasePath
の一般的な値は次のとおりです。
C:\Documents and Settings\username
\Application Data
CompanyName
、ProductName
、およびProductVersion
の値は、アプリケーションのアセンブリ情報から取得されます。 ログ ファイル名の形式は AssemblyName.log で、 AssemblyName は拡張子のないアセンブリのファイル名です。 アプリケーションがログに書き込もうとしたときに元のログが使用できない場合など、複数のログ ファイルが必要な場合、ログ ファイル名の形式は AssemblyName-iteration.log で、 iteration
は正の Integer
です。
コンピューターとアプリケーションの構成ファイルを追加または変更することで、既定の動作をオーバーライドできます。 詳細については、「 チュートリアル: My.Application.Log が情報を書き込む場所を変更する」を参照してください。
ログ設定の構成
Log
オブジェクトには、app.configアプリケーション構成ファイルなしで動作する既定の実装があります。既定値を変更するには、新しい設定で構成ファイルを追加する必要があります。 詳細については、「 チュートリアル: My.Application.Log 出力のフィルター処理」を参照してください。
ログ構成セクションは、app.config ファイルのメイン <configuration>
ノードの <system.diagnostics>
ノードにあります。 ログ情報は、いくつかのノードで定義されます。
Log
オブジェクトのリスナーは、DefaultSource という名前の<sources>
ノードで定義されます。Log
オブジェクトの重大度フィルターは、DefaultSwitch という名前の<switches>
ノードで定義されます。ログ リスナーは、
<sharedListeners>
ノードで定義されます。
<sources>
、<switches>
、および<sharedListeners>
ノードの例を次のコードに示します。
<configuration>
<system.diagnostics>
<sources>
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"
/>
</sharedListeners>
</system.diagnostics>
</configuration>
デプロイ後のログ設定の変更
アプリケーションを開発すると、その構成設定は、上記の例に示すように、app.config ファイルに格納されます。 アプリケーションをデプロイした後も、構成ファイルを編集してログを構成できます。 Windows ベースのアプリケーションでは、このファイルの名前は applicationName.exe.configであり、実行可能ファイルと同じフォルダーに存在する必要があります。 Web アプリケーションの場合、これはプロジェクトに関連付けられている Web.config ファイルです。
アプリケーションが初めてクラスのインスタンスを作成するコードを実行すると、構成ファイルでオブジェクトに関する情報がチェックされます。
Log
オブジェクトの場合、これは、Log
オブジェクトに初めてアクセスされるときに発生します。 システムは、アプリケーションが初めてオブジェクトを作成する際に、特定のオブジェクトに対して構成ファイルを 1 回だけ検査します。 そのため、変更を有効にするには、アプリケーションの再起動が必要になる場合があります。
デプロイされたアプリケーションでは、アプリケーションの開始前にスイッチ オブジェクトを再構成することでトレース コードを有効にします。 通常、これには、スイッチ オブジェクトのオンとオフを切り替えるか、トレース レベルを変更してから、アプリケーションを再起動する必要があります。
セキュリティに関する考慮事項
ログにデータを書き込む場合は、次の点を考慮してください。
ユーザー情報が漏えいしないようにします。 アプリケーションが承認された情報のみをログに書き込みます。 たとえば、アプリケーション ログにユーザー名を含め、ユーザー パスワードは含めないようにすることができます。
ログの場所をセキュリティで保護する。 機密情報の可能性があるログは、安全な場所に保存する必要があります。
誤解を招く情報を避けます。 一般に、アプリケーションでは、そのデータを使用する前に、ユーザーが入力したすべてのデータを検証する必要があります。 これには、アプリケーション ログへのデータの書き込みが含まれます。
サービス拒否を避けます。 アプリケーションがログに書き込む情報が多すぎると、ログに入力されたり、重要な情報の検索が困難になる可能性があります。
こちらも参照ください
.NET