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

Где находится ${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>

Это работает, насколько я могу судить, но у меня нет подсказки, где он записывает что-нибудь в.

4b9b3361

Ответ 2

Это зависит также от платформы. Для обычных проектов .Net это действительно бит или bin/debug и т.д. (В зависимости от ваших настроек сборки)

Для coreclr/aspnet5 это папка bin вашей среды выполнения dnx. Это все еще продолжается.

Ответ 3

На основе уже предоставленных ответов и комментариев ответ можно подвести для приложения .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>

Ответ 4

Другая возможность для отказа состоит в том, что если вы используете NLog.config, NLog не может найти файл конфигурации. Установите файл "Копировать всегда" в вашей сборке, и он окажется в вашем каталоге bin, поэтому NLog сможет найти его во время выполнения.

Если вы скопируете информацию конфигурации NLog в свой App.config, у вас не будет этой проблемы.