かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Enterprise Library入門 その4 「Logging Application Blockは構成ファイルに定義しましょう」

構成ファイルによるログの設定

ConfigurationSourceBuilderによるFluent APIでの構成はプログラムでログの設定が組み立てられて慣れるととてもいいのですが、ログに関しては障害の調査のために一時的にログをErrorからInformationに下げて取得したいといったことが考えられます。このように、再コンパイルを行わずに構成変更することが考えられるログは、本番では構成ファイルによって設定したほうが良いと考えられます。
Enterprise Libraryにはグラフィカルに構成ファイルを編集できるツールがついているのでそれを使用して構成を組み立てることができます。


Logging Application Blockの構成は下記のような構造になっています。

カテゴリを定義して、それに対してログの出力先やルール(ローリング等)を定義するリスナーを複数紐づけます。さらにリスナーにログの出力形式を指定するフォーマッタを紐づけます。カテゴリには全てのイベントを受け取るカテゴリと、処理されなかったカテゴリを受け取るものと、ログ内部でエラーが起きたときのための特殊なカテゴリも定義されています。

フォーマッタで指定可能な書式

Logging Application BlockのTextFormatterでは{}で括られたプレースホルダでログのメッセージやタイムスタンプなどを任意の並びで表示するように構成可能です。代表的なものに、ログの文字列を指定する{message}や、タイムスタンプを指定する{timestamp}、ログの重要度を指定する{severity}などがあります。このフォーマットを組み立てるには、Enterprise Libraryの構成ツールのTemplate Editorで作成するのが楽なのでお勧めです。
Template Editorは、構成ツールのLog Message Fomattersの下にText Formatterを作成し、そのTemplateの横にある[…]というボタンをクリックすることで表示させることが可能です。