Где находится ${basedir}, используя NLog?
Если я полностью не пропущу его, я под впечатлением, что документация NLog использует ${basedir}
в своих примерах, не объясняя, каким должно быть его местоположение.
где я могу найти информацию, в которой перечислены все возможные варианты со значимым описанием?
у меня эта конфигурация определена:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
<targets>
<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${message}"
fileName="${basedir}/logs/${shortdate}.txt"
keepFileOpen="false"
encoding="iso-8859-2" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
он работает, насколько я могу судить, но я понятия не имею, где он регистрирует что-либо.
4 ответов
${basedir}
- каталог, в котором выполняется приложение.
Я думаю, вы найдете эта страница руководства полезная.
Это зависит также от платформы. Для обычных .Net-проектов это действительно bin или bin/debug и т. д. (в зависимости от настроек сборки)
для coreclr / aspnet5 это папка bin вашей среды выполнения dnx. Это все еще продолжается.
основываясь на уже представленных ответах и комментариях, ответ может быть суммирован для приложения .NET:
AppDomain.CurrentDomain.BaseDirectory
для консоли или приложения Windows Forms этот каталог является bin/debug
находясь в Visual Studio. Если приложение развернуто, путь, скорее всего, будет исполняемым путем.
для веб-приложений (ASP.NET) это будет корневой каталог веб-приложения.
не видеть какие-либо файлы могут быть вызваны несколькими причинами, которые включают: Ошибки конфигурации NLog и невозможность записи целевого файла. Чтобы выявить эти ошибки, убедитесь, что NLog.config (или конфигурация Nlog, встроенная в web.config или app.config) указывает внутренний файл журнала для вывода таких ошибок:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
internalLogFile="C:\NLogError\NLog.log">
<!-- targets and rules come here -->
</nlog>
другая возможность отказа заключается в том, что если вы используете NLog.config, NLog не может найти файл конфигурации. Установите файл для копирования всегда в вашей сборке, и он окажется в вашем каталоге bin, поэтому NLog может найти его во время выполнения.
Если вы копируете Данные конфигурации NLog в свое приложение.config, у вас не будет этой проблемы.