С# как указать путь к файлу appData в файле 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>

В моем исходном коде я могу получить путь, выполнив следующее:

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

Однако я не могу использовать вышеприведенное в моем app.config, и если бы я жестко закодировал путь в моей системе, путь был бы следующим:

C:\Documents and Settings\John\Application Data

Однако это будет отличаться для каждого клиента. Итак, есть ли способ сделать это для файла app.config?

Большое спасибо за любые предложения,

Ответы

Ответ 1

Я не верю, что вы можете делать то, что хотите, есть метод для настраиваемых разделов парсинга файла app.config, чтобы вы могли добавить свой собственный токен, который вы могли бы заменить с правильным значением, но я не Посмотрите, как это будет работать внутри раздела log4net.

Однако все, что настроено для log4net внутри конфигурации, также может быть установлено в коде. Я думаю, что вам лучше всего будет установить свойство для приложения в коде сразу после запуска приложения.


Ах, неважно, быстрый поиск показал мое невежество. Из здесь и здесь кажется, что что-то похожее на это:

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

Будет делать то, что вы хотите. Я не тестировал это сам, поэтому я тоже остану свой первый ответ, но мне было бы интересно узнать, есть ли у вас какая-нибудь удача.