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

问题描述 投票:18回答:2

我正在使用log4net,并且将日志文件保存在AppData文件中以用于Win XP / Vista等。

到目前为止,这是我的app.config文件,我已指定名称softphone.log。但是,我不确定如何指定文件的完整路径,因为每个用户将根据其用户名使用不同的路径。

<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文件执行此操作?

非常感谢您的任何建议,

c# app-config
2个回答
17
投票

我不相信您可以做您想做的事,有一种方法可以自定义分析app.config文件的区域,以便您可以添加自己的令牌,并用正确的值替换,但是我不知道请参阅log4net部分中的内容。

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


[啊,没关系,快速搜索显示了我的无知。从herehere看来,类似于以下内容:

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

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


0
投票

用户%appdata%。所以你的代码看起来像-

<file value="%appdata%/softphone.log"/>
© www.soinside.com 2019 - 2024. All rights reserved.