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
Атрибут должен быть установлен в абсолютный путь, а исполняющая сборка должна иметь разрешение на запись в этот абсолютный путь.
Следующее сработало для меня.
- Создайте папку где-нибудь - например, маршрут вашего
c:
диск, напримерc:\logs
- Отредактируйте права доступа к этой папке и дайте полный контроль всем
- Установите вашу конфигурацию 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