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

ant*_*009 18 c# app-config

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

这是我的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>
Run Code Online (Sandbox Code Playgroud)

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

System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Run Code Online (Sandbox Code Playgroud)

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

C:\Documents and Settings\John\Application Data
Run Code Online (Sandbox Code Playgroud)

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

非常感谢任何建议,

Mar*_*ris 18

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

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


啊,没关系,快速搜索揭示了我的无知.从这里这里看起来像这样的东西:

<file value="${APPDATA}\log-file.txt" />
Run Code Online (Sandbox Code Playgroud)

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