C#如何在app.config文件中指定appData文件路径

标签 c# app-config

我正在使用 log4net,我将日志文件保存在 win XP/Vista 等的 AppData 文件中。

到目前为止,这是我的 app.config 文件,我指定了名称 softphone.log。 Hoewver,我不确定如何指定文件的完整路径,因为每个用户都会有不同的路径,具体取决于他们的用户名。

<log4net>
    <logger name="default">
      <level value="DEBUG"/>
    </logger>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="softphone.log"/>
      <appendToFile value="true"/>
      <rollingStyle value="Size"/>
      <maxSizeRollBackup value="10"/>
      <maximumFileSize value="1MB"/>
      <staticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
      </layout>
    </appender>
  </log4net>

在我的源代码中,我可以通过执行以下操作来获取路径:

System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

但是,我不能在我的 app.config 中使用上面的内容,如果我在我的系统上硬编码路径,路径将是:

C:\Documents and Settings\John\Application Data

但是,这对于每个客户来说都是不同的。那么有没有办法对 app.config 文件执行此操作?

非常感谢您的任何建议,

最佳答案

我不相信你可以做你想做的事,有一种方法可以自定义解析 app.config 文件的区域,这样你就可以添加你自己的 token ,你可以用正确的值替换它,但我不'看看它在 log4net 部分中是如何工作的。

但是,在配置中为 log4net 设置的所有内容也可以在代码中设置。我认为您最好的选择是在应用程序启动后立即在代码中设置 appender 的属性。


啊,没关系,快速搜索暴露了我的无知。来自 herehere似乎与此类似:

<file value="${APPDATA}\log-file.txt" />

会做你想做的事。我自己还没有测试过这个,所以我也会留下我的第一个答案 - 但我很想知道你是否有运气。

关于C#如何在app.config文件中指定appData文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/964132/

相关文章:

c# - 增加套接字客户端中的内存使用率

C# - 公共(public) getter 和 protected setter 接口(interface)

c# - 向 Visual Studio 扩展中的组合元素添加值

c# - .NET 获取自定义配置部分作为 NameValueCollection

c# - .NET ConfigurationManager app.config 困惑

asp.net-core - appsettings.json 中 ConnectionString 中的 SQL 别名存在问题

c# - .net mvc - 如何使类方法参数 (IQueryable) 可以为空

c# - 如何将属性附加到自定义事件?

.net - 是否可以通过 app.config 将 .NET dll "inject"放入另一个 .NET 应用程序?

Django - 'myapp' vs 'myapp.apps.myappConfig' in settings.py Installed Apps