Внутренний журнал NLog не работает с ASP.Net MVC

У меня есть проблема с NLog для регистрации его внутренних журналов с этой конфигурацией

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  throwExceptions="true"
  internalLogFile="${basedir}/App_Data/NLog.log"
  internalLogLevel="Trace">

   <targets>
      <target name="debug"
              xsi:type="File" 
              fileName="${basedir}/App_Data/Site.log" />
   </targets>

   <rules>
      <logger name="*"
              writeTo="debug" />
   </rules>
</nlog>

Целевая "отладка" работает хорошо, но internalLogFile работает, только если я установил его для примера "D:/NLog.log".

Любая идея, почему это происходит?

Ответ 1

Вы не можете использовать средства рендеринга ${...} в свойстве internalLogFile. Они предназначены только для целевого макета:

<target layout="${...}" />

Попробуйте использовать относительный путь, например "..\App_Data\NLog.log"

Ответ 2

Атрибут internalLogFile должен быть установлен в абсолютный путь, и исполняющая сборка должна иметь разрешение на запись этого абсолютного пути.

Следующие работали для меня.

  • Создайте папку где-нибудь - например. маршрут вашего диска c:, например. c:\logs
  • Отредактируйте разрешения этой папки и дайте полный контроль всем
  • Задайте конфигурацию nlog: internalLogFile="C:\logs\nlog.txt"

Не забудьте очистить после себя и не оставлять каталог с такими разрешениями на