はじめに
この記事では以下の内容を紹介します。
- WPF で SimpleInjector を使用する方法
- WPF と SimpleInjector を使用している状態で、ZLogger を使用する方法
それぞれの基本的な説明などは省いていますので、必要に応じて公式ドキュメントなどもご確認ください。
実行環境
- Windows 11
- .Net 8
- SimpleInjector:5.5.0
- ZLogger:2.5.10
WPF プロジェクトテンプレートでプロジェクトを作成し、それぞれ NuGet から最新版をインストールしました。
SimpleInjector を設定する
まず、デフォルトで入っているMainWindow.xaml
の以下の記述を削除します。
これを消さないと、後で 2 個の Window が起動してしまいます。
あとはApp.xaml.cs
に以下の記述を追加します。
コンテナをしっかりアプリ終了時に Dispose します!
ZLogger を設定して SimpleInjector に登録する
RegisterLogger
というロガーの登録メソッドを App クラス内に用意し、以下のようにConfigureContainer
メソッド内で呼び出すようにしました。
RegisterLogger
は以下のようになっています。
AddZLoggerFile
はlog/log.txt
というパスにログを書き込みます。
AddZLoggerInMemory
はDebug.WriteLine
で VisualStudio の出力タブにログが表示されるようにする設定です。
また、どちらもUsePlainTextFormatter(PlanTextFormatter)
の部分で、ログテキストに日付や時間などの情報を追加しています。
SetPrefixFormatter
は第一引数に、第二引数の値が順番に入ってきます。
{1:short}
の部分にはinfo.LogLevel
が入ってきて、short
とすることで LogLevel を 3 文字にそろえてくれます。
ZLogger>Formatter Configurations
これで SimpleInjector を使いつつ、あとは別の受取クラスでコンストラクタでILogger<Hoge> logger
と書けば指定の Logger を得られるようになりました!