Где находится ${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, у вас не будет этой проблемы.