log4netのログファイルを環境変数で設定する

log4netのログファイルの指定でパスの部分を環境変数から取得して設定したくなりました

<file value="log\hogehoge.log" />
  • ドライブレターを変えたいというご要望なので、以下のようにしたら環境変数LOG_BASEでちゃんと置換されました。
    • 環境変数LOG_BASEは例えばE:\logというように設定しておきます。
<file value="${LOG_BASE}\hogehoge.log" />

改造しなくてよかったw

追記

  • 環境変数がセットされているcmd.exeから呼び出すとかだと上のでいいのですが、Windowsサービス等にしていてシステム環境変数を弄りたくない時などにプログラムの中から環境変数をセットして展開したい時もあります。
    • 以下のようにしたら出来ました。
Environment.SetEnvironmentVariable("LOG_BASE", @"E:\log");
log4net.Config.XmlConfigurator.Configure(logconfig);