連載
|
|
前回では、Data Access Application Blockを使ったデータアクセス・ヘルパー機能の実装と拡張ツールについて解説した。
今回は、業務システムには欠かすことのできないログ出力機能を提供する「Logging & Instrumentation Application Block」(以下LoggingAB)を紹介する。なお、今後の連載では2005年7月1日(日本時間)にリリースされたEnterprise Library 1.1(Enterprise Library - June 2005。詳しくは第3回の「【コラム】Enterprise Library 1.1について」を参照)を使って解説していく。
ログの出力先と書式の分離
まずはLoggingABの要となる、ログ出力先を管理する機能と、ログの出力書式を管理する機能を紹介しよう。
●出力先リソースに関する情報を保持する「Sink」
LoggingABはログ出力を行うApplication Blockであるが、実際の業務システムでよく利用されるテキスト・ファイルやイベント・ログへの出力以外にもさまざまなリソースに対してログを出力することが可能になっている。これら出力先リソースに関する情報を独立させて管理するのが「Sink」である。このSinkによって、LoggingABではログの出力先リソースを柔軟に切り替えられるようになっている。
以下にLoggingABで用意されているSinkの一覧を示す。
Sinkの種類 | 機能内容 |
Event Log Sink | イベント・ログへ出力する |
Email Sink | ログ内容が記述された電子メールを送信する |
Flat File Sink | テキスト・ファイルへ出力する |
Msmq Sink | ログ内容をMSMQ(Microsoft Message Queuing)へキューイングする |
WMI Log Sink | ログ情報を基にWMI(Windows Management Instrumentation)用の管理イベントを発生させる |
Database Sink | Data Access Application Blockを利用して、データソース(データベースなど)へ出力する |
Enterprise Library 1.1のLoggingABで用意されているSink一覧 | |
標準で用意されているこれらのSink以外にも、拡張機能として「Rolling Flat Sink」が存在する(詳細後述)。 |
●出力書式に関する情報を保持する「Formatter」
単にログを出力するといっても、「テキスト形式」もあれば「XML形式」もあり、さまざまな出力書式が考えられる。そのような出力書式に関する情報を保持するのが「Formatter」である。Enterprise Library 1.1では、「Text Formatter」(テキスト形式)のみが用意されている。
ConfigurationコンソールでLoggingABの構成を設定する
それでは次にConfigurationコンソールを使ったLoggingABの構成管理手順について解説しよう。LoggingABをアプリケーションで利用するためには、まずこれらの設定を行っておく必要がある。
●ConfigurationコンソールでのLoggingABの追加
「The Enterprise Library Configuration Console」(以下Configurationコンソール)の基本的な使い方は、前回紹介した使い方と大体同じだが、今回は「アプリケーション」ノードに「Logging & Instrumentation Application Block」ノードを追加する。
上の図を見ると分かるように、「Logging & Instrumentation Application Block」ノードの配下には次のような子ノードが自動的に追加される。
-
Client Settings
→「ログ出力機能の振る舞い」を設定するノード -
Distributor Settings
→「Sink、Formatter、Category(=SinkとFormatterの組み合わせ)」を設定するノード
LoggingABは「Distributor Settings」ノードで出力先リソースと書式の組み合わせを設定し、「Client Settings」ノードでログ出力処理を制御することで、ソース・コードを変更することなくログ出力の振る舞いを柔軟に変更できるのである。
●「Logging & Instrumentation Application Block」配下の各ノードにおけるプロパティ設定
以下の表は、上記の各ノードの各プロパティに対して、出力先リソースとしてイベント・ログとテキスト・ファイルを、書式としてテキスト形式を指定した設定例である。
ノード | プロパティ | 設定値 | |||
Client Settings | CategoryFilterSettings | Allow all except: | |||
DistributionStrategy | In Process | ||||
LoggingEnabled | True | ||||
MinimumPriority | 0 | ||||
TracingEnabled | True | ||||
Distributor Settings | DefaultCategory | Trace | |||
DefaultFormatter | Text Formatter | ||||
Categories | General | Event Log Destination | Formatter | Text Formatter | |
Name | Event Log Destination | ||||
Sink | Event Log Sink | ||||
Trace | Flat File Destination | Formatter | Text Formatter | ||
Name | Flat File Destination | ||||
Sink | Flat File Sink | ||||
Formatters | Text Formatter | Name | Text Formatter | ||
Template | <template> | ||||
Sinks | Event Log Sink | EventLogName | Application | ||
EventSourceName | Enterprise Library Logging | ||||
Name | Event Log Sink | ||||
Flat File Sink | FileName | trace.log | |||
Footer | ---------------------------------------- | ||||
Header | ---------------------------------------- | ||||
Name | Flat File Sink | ||||
LoggingAB配下の各ノードのプロパティに対する設定の例 | |||||
この表では、Flat File SinkとText Formatterを組み合わせたテキスト形式でのログ出力を、LoggingABに対して設定している。表中の太字の個所がデフォルト設定から変更した設定値である。 |
具体例は次項で示すが、この表の設定では、アプリケーションからログを出力する場合には「trace.log」というファイルにテキスト形式でログが出力される(DefaultCategoryプロパティをTraceに設定しているため)。
ConfigurationコンソールでのLoggingABの構成設定が終了したら、最後に設定を保存しよう。メニューバーの[File]−[Save Application]を実行すると、どこに保存するかを選択するための[Save Application : Application1]ダイアログが表示される。このダイアログの[ファイル名]の欄ではLoggingABを使用する「アプリケーション構成ファイルの名前」(Windowsアプリケーションの場合は「App.config」、ASP.NET Webアプリケーションの場合は「Web.config」)を指定する。これにより、Configurationコンソールで設定した内容が、指定した名前のアプリケーション構成ファイルにXML形式で出力される。
これでLoggingABを使う準備が整ったので、続いては実際に使ってみよう。
INDEX | ||
連載:Enterprise Library概説 | ||
拡張性と使いやすさを併せ持つログ出力機能を実装しよう | ||
1.ConfigurationコンソールでLoggingABの構成を設定する | ||
2.例外発生時のエラー情報を出力する | ||
3.カスタムSinkを作成する | ||
「Enterprise Library概説」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|