我正在配置 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")
没运气。前两个只是认为它是相对路径的一部分,后者被拒绝,因为它在 AssemblyInfo 中:
错误 1 属性参数必须是属性参数类型 C:\Source\ ... \Tools\Logging\Logging\Properties\AssemblyInfo.cs 的常量表达式、typeof 表达式或数组创建表达式 39 56 Logging
我是否必须将应用程序配置为在启动时使用自定义路径?我真的不想,因为我希望代码尽可能不可知。