別の構成ファイルを使用するように log4net を構成しています。これを行うには、AssemblyInfo.cs ファイルに次の行を追加します。
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
この場所はプログラム ディレクトリに対して相対的ですが、ユーザーの APPDATA フォルダーに置きたいと思っています。何かのようなもの:
ConfigFile = @"C:\Users\UserName\AppData\Roaming\MyApplication\Logging\Log4Net.config"
問題は、これが相対パスではないことです。つまり、別のユーザー名がサポートされていないなどです。私が本当に欲しいのは次のとおりです。
ConfigFile = @"%APPDATA%\MyApplication\Logging\Log4Net.config"
もちろん、これは機能しません。私はこれがそれを修正することを望んでいました:
ConfigFile = @"${APPDATA}\MyApplication\Logging\Log4Net.config"
またはこれ:
ConfigFile = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
@"MyApplication\Logging\Log4Net.config")
運がない。最初の 2 つは相対パスの一部であると考えているだけですが、後者は AssemblyInfo にあるため拒否されます。
エラー 1 属性引数は、定数式、typeof 式、または属性パラメーター型の配列作成式でなければなりません C:\Source\ ... \Tools\Logging\Logging\Properties\AssemblyInfo.cs 39 56 Logging
起動時にカスタム パスを使用するようにアプリケーションを構成する必要がありますか? コードをできるだけ不可知論的にしたいので、私は本当にしたくありません。