NLog не работает в режиме релиза - PullRequest
13 голосов
/ 24 декабря 2009

Я использую NLog для регистрации исключений в моем приложении asp.net mvc (C #).

NLog не работает в режиме выпуска. То же самое работает при работе в режиме отладки.

В чем может быть проблема? Есть ли какое-то решение для этого?

Ответы [ 6 ]

4 голосов
/ 13 февраля 2012

У меня была такая же проблема, как и у вас:

  • ASP.NET MVC 3
  • .NET 4
  • IIS 7
  • Режим разблокировки

Я попытался изменить каталоги и изменить разрешения, но безрезультатно. Я даже попытался включить внутреннюю регистрацию, но даже это не сработало! Никаких сбоев, никаких исключений, ничего!

Проведя дополнительное расследование, я нашел решение. По какой-то причине NLog не загружал файл конфигурации ВСЕ. Я понял это после того, как программно включил внутреннюю регистрацию. Внутреннее ведение журнала сообщило об этом:

2012-02-13 11:34:40.3181 Debug Targets for MyMvcController by level:
2012-02-13 11:34:40.3181 Debug Trace =>
2012-02-13 11:34:40.3181 Debug Debug =>
2012-02-13 11:34:40.3181 Debug Info =>
2012-02-13 11:34:40.3181 Debug Warn =>
2012-02-13 11:34:40.3181 Debug Error =>
2012-02-13 11:34:40.3181 Debug Fatal =>

По сути, это означало, что ни для одного из уровней журнала не было задано ни одной цели! Определенно не правильно!

Мой файл конфигурации NLog был настолько прост, насколько это возможно (и ему было присвоено значение Копировать в выходной каталог):

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" throwExceptions="true">
  <targets>
    <target name="file" xsi:type="File" fileName="${basedir}/MyApplication.log" />
  </targets>
  <rules>
    <logger name="*" minlevel="Trace" writeTo="file" />
  </rules>
</nlog>

Я до сих пор точно не знаю , почему это происходило, но перемещение конфигурации NLog в web.config напрямую решило проблему.

1 голос
/ 08 марта 2018

Для тех, кто не уверен в том, «почему nlog не работает в среде prod»:

  1. Перейти к файлу Nlog.config
  2. SET throwExceptions = " true " в теге nlog и начать отладку с правильными ошибками.

Удачи.

1 голос
/ 22 июня 2010

установите переменные среды: NLOG_INTERNAL_LOG_LEVEL и NLOG_INTERNAL_LOG_FILE, перезапустите сборку релиза, затем проверьте файл журнала и посмотрите, что не так

0 голосов
/ 15 января 2018

Я следовал за всеми другими ответами, но это не сработало. Поэтому я попробовал следующее, и это сработало.

* 1003 т.е. *

public LoggerService()
{
    _logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
}

Путь к nlog.config может быть другим для вас.

FYI : Я использовал версию NLog 4.5.10

0 голосов
/ 26 января 2016

Убедитесь, что ваш целевой файл сохраняется в папке "/ logs /". Смотри ниже

<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />

Я попытался войти в систему "root / log.log" и не работал, затем попытался "root / logs / log.log" и работал

Ниже полный конфигурационный файл.

<?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"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >


  <!-- optional, add some variabeles
  https://github.com/nlog/NLog/wiki/Configuration-file#variables
  -->
  <variable name="myvar" value="myvalue"/>

  <!-- 
  See https://github.com/nlog/nlog/wiki/Configuration-file 
  for information on customizing logging rules and outputs.
   -->
  <targets>

    <!-- 
    add your targets here 
    See https://github.com/nlog/NLog/wiki/Targets for possible targets.
    See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
    -->

    <!--
    Writing events to the a file with the date in the filename. -->
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />

  </targets>

  <rules>
    <!-- add your logging rules here -->

    <!--
    Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace)  to "f"-->
    <logger name="*" minlevel="Debug" writeTo="f" />

  </rules>
</nlog>
0 голосов
/ 13 августа 2015

Перенесите конфигурацию nlog в файл конфигурации вашего приложения (например, web.config) и повторите попытку.

...