log4netでログファイル名の一部をプログラムから指定

C# のログ出力ライブラリ log4net にて、出力するログファイルのファイル名にプログラム側から動的に値を入れたい場合があります。例えば、ログファイルの名前にバージョン番号を入れる、等です。

log4net のファイル名は app.config の appender の file タグにて指定しますが、%property{} にて値を書き込めるそうです。以下、手順を示します。

1.ファイル名の指定

fileタグにて、次のように %property{} を指定します。

value="~/App_Data/%property{LogName}"

2.タイプを指定する

これを指定しないと、適切に動作しませんでした。file タグにて指定します。

type="log4net.Util.PatternString"

3.コード中にて値を指定する。

以下などにて、 %property{} に値を代入します。これにて、動的な指定が可能です。なお、Configure の前であれば、任意の場所で指定できます。

log4net.GlobalContext.Properties["LogName"] = LogName;
log4net.Config.XmlConfigurator.Configure();

以上です

参考記事

Best way to dynamically set an appender file path

カテゴリー: