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".

Есть идеи, почему это происходит?

3 ответа

Решение

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

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

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

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

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

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

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

NLog ver. 4.6 добавить поддержку переменных среды, таких как%appdata% или%HOME%, и использовать эти базовые макеты в internalLogFile=:

  • ${currentdir}
  • ${basedir}
  • ${tempdir}

NLog ver. 4.7 также добавляет это:

  • $ {processdir}

См. Также: https://github.com/NLog/NLog/wiki/Internal-Logging

По этой ссылке думаю путь абсолютный

Другие вопросы по тегам