2010-01-04 1 views
43

Мои NLog мишеням, как это:использованием AppData месте в 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?

ответ

69

Вы ищете NLog special folders.

Пример:

...fileName="${specialfolder:folder=ApplicationData}/Program/file.txt"... 
+0

Да, но как его использовать? Я уже пробовал, fileName = "$ {ApplicationData} /RentalEase/access.txt", и он терпит неудачу. – Malfist

+0

Я не помню с головы, но это должно выглядеть так: $ {specialfolder: folder = SPECIALFOLDERNAME} –

+0

Это не работает, говорит, что это неверно. – Malfist

4

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

10

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

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

Заголовок вопроса использует «AppData», но я не думаю, что {..ApplicationData} сопоставляется с App_Data, мне нужно будет прочитать источник для двойной проверки. –

+1

Этот вопрос и принятый ответ касаются специальной папки Windows% appdata%, обычно C: \ Users \ \ AppData \ Roaming. Кажется, нет специальной переменной для папки ASP.net App_Data. – angularsen

0

Предыдущие ответы помогли решить проблему, с которой я столкнулся, но через пару лет решение теперь несколько отличается от 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}" 

 Смежные вопросы

  • Нет связанных вопросов^_^