Подтвердить что ты не робот

Использование местоположения AppData в NLog

Мои цели NLog таковы:

<targets>
  <target xsi:type="Console" name="console" 
    layout="${longdate}|${level}|${message}" />
  <target xsi:type="File" name="ErrorLog" fileName="${basedir}/error.txt"
          layout="${longdate}
          Trace: ${stacktrace} 
          ${message}" />
  <target xsi:type="File" name="AccessLog" fileName="${basedir}/access.txt"
          layout="${shortdate} | ${message}" />
</targets>

Но это вызывает проблемы, если пользователь не является администратором на своем компьютере, потому что у них не будет доступа на запись к "Program Files". Как я могу получить что-то вроде %AppData% для NLog вместо BaseDir?

4b9b3361

Ответ 2

Ответ Орена должен быть правильным ответом. Тем не менее, в течение жизни я не мог заставить его работать с моим веб-сайтом .NET 4.0 с помощью nLog 2.0.0.0. Я просто использовал просто

fileName="${basedir}app_data\logs\${shortdate}.log" 

Ответ 3

${specialfolder: ApplicationData} также работает

Ответ 4

Предыдущие ответы помогли решить проблему, с которой я столкнулся, но через пару лет решение теперь несколько отличается от v4.3. Каталог и имя файла объединены с контуром.

Ссылка @theGecko по-прежнему актуальна для синтаксиса, но на странице отсутствует пример:

https://github.com/nlog/NLog/wiki/Special-Folder-Layout-Renderer

В следующем примере файл myLog.log будет записываться в каталог роуминга данных текущего пользователя C:\USers\current.user\AppData\Roaming\My\Path\Somewhere:

fileName="${specialfolder:dir=My/Path/Somewhere/:file=myFile.log:folder=ApplicationData}"