Ответ 1
${basedir}
- каталог, в котором выполняется приложение.
Я думаю, вы найдете это полезным:
https://github.com/NLog/NLog/wiki/Layout-Renderers
Если я полностью не пропущу его, у меня создается впечатление, что документация 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>
Это работает, насколько я могу судить, но у меня нет подсказки, где он записывает что-нибудь в.
${basedir}
- каталог, в котором выполняется приложение.
Я думаю, вы найдете это полезным:
https://github.com/NLog/NLog/wiki/Layout-Renderers
Это зависит также от платформы. Для обычных проектов .Net это действительно бит или 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 в свой App.config, у вас не будет этой проблемы.