Не знаю, как заставить работать Glimpse.Log4Net.

Я пытаюсь заставить Glimpse.Log4Net работать в существующем проекте ASP.Net MVC v4 (в VS2010), следуя документам здесь и здесь, но хотя решение компилируется и запускает Glimpse и log4net, кажется, работает правильно, я не вижу материал log4net в окне Glimpse, который я ожидаю, и как показано в конце страницы во 2-й ссылке.

У меня есть внедрение зависимостей, происходящее с Autofac, с использованием этого метода, и я не Не думаю, что это мешает, потому что я получаю записи в файле журнала, как и ожидалось.

Может кто-то указать мне верное направление?

В моем контроллере:

public class QuoteController : Controller
{
  private readonly PrintCostEntities db;

  private readonly ILog logger;

  public QuoteController(PrintCostEntities db, ILog logger)
  {
    if (db == null)
    {
      throw new ArgumentNullException("db");
    }

    if (logger == null)
    {
      throw new ArgumentNullException("logger");
    }

    this.db = db;
    this.logger = logger;
  }

  public ActionResult Index()
  {
    this.logger.DebugFormat("Index");

    return this.View(this.db.Quotes);
  }
}

В global.asax:

public class MvcApplication : System.Web.HttpApplication
{
  private readonly ILog logger;

  protected MvcApplication()
  {
    XmlConfigurator.Configure();
    this.logger = LogManager.GetLogger(typeof(MvcApplication));
  }

  protected void Application_Start()
  {
    this.logger.Debug("Application_Start");
  }
}

В веб.конфигурации:

<configuration>
  <configSections>            
    <section name="glimpse" type="Glimpse.Core.Configuration.Section, Glimpse.Core" />
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <system.web>
    <httpModules>
      <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" />
    </httpModules>
    <httpHandlers>
      <add path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet" />
    </httpHandlers>
  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="Glimpse" type="Glimpse.AspNet.HttpModule, Glimpse.AspNet" preCondition="integratedMode" />
    </modules>
    <handlers>
      <add name="Glimpse" path="glimpse.axd" verb="GET" type="Glimpse.AspNet.HttpHandler, Glimpse.AspNet" preCondition="integratedMode" />
    </handlers>
  </system.webServer>
  <glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd" /> 
  <log4net>  
    <appender name="GlimpseAppender" type="Glimpse.Log4Net.Appender.GlimpseAppender">
      <threshold value="ALL" />
    </appender>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <threshold value="ALL" />
      <file value="log4net.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyyMMdd" />
      <maxSizeRollBackups value="5" />
      <param name="StaticLogFileName" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
      </layout>
    </appender>
    <root>
      <appender-ref ref="GlimpseAppender" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>
</configuration>

person meataxe    schedule 08.03.2013    source источник


Ответы (3)


Подключаемый модуль log4net Glimpse был создан Джесс Чедвик и еще не обновлен до новейшей версии Glimpse.

Вы захотите использовать Glimpse версии 1.1 с MVC4, но плагин log4net еще не обновлен.

Хорошая новость заключается в том, что Glimpse.Log4Net имеет открытый исходный код, поэтому вы сможете легко обновлять его. для работы с новыми интерфейсами. Я мог бы даже попытаться обновить его сам на следующей неделе.

person nikmd23    schedule 22.03.2013
comment
Хорошо, это имеет смысл. Спасибо. - person meataxe; 24.03.2013
comment
Я попытался использовать последнюю версию Glimpse.Log4Net (0.86.2.0), которая поддерживает Glimpse версии 1.3. Я вижу, что вкладка log4net отображается на консоли Glimpse, но она неактивна/черна, поэтому я не могу щелкнуть по ней. У кого-нибудь есть Glimpse + Log4Net для работы с MVC 4? - person Thomas Svensen; 27.06.2013
comment
Версия 1.0 @ThomasSvensen, похоже, работает, см. мой ответ ниже, чтобы узнать, что может быть не так в вашем конкретном случае. - person Marijn; 19.12.2013

Пакет был обновлен до версии 1.0 в мае 2013 г., и эта версия у меня работает нормально. в моем приложении asp.net mvc4.

Вкладка log4net остается черной/неактивной (как вы упоминаете в своем вопросе), когда к файлу GlimpseAppender не добавлено сообщение. На это есть несколько возможных причин:

  • нет настроенного GlimpseAppender - это случилось со мной, потому что У меня была пользовательская конфигурация log4net
  • Где-то в вашем контроллере (ах) выполняется перенаправление после того, как ваше сообщение было зарегистрировано. Ваш типичный RedirectResult будет перенаправлять через клиент, что приведет к новому запросу. GlimpseAppender регистрирует только сообщения для текущего HTTP-запроса, поэтому вы не увидите никаких сообщений до перенаправления. (примечание: если вы выполняете post-redirect-get, самое интересное сообщение в журнале не находится на вкладке журнала просмотра)

И затем, конечно, есть "обычные" log4net причины, по которым сообщение не регистрируется. Но я считаю, что не по теме для этого вопроса.

person Marijn    schedule 19.12.2013

Если кто-то ищет дополнительную информацию по этому вопросу - что сработало для меня:

  • VS 2013, MVC4, Glimpse 1.8.5, log4net 1.2.11.0

  • используя отдельный файл log4net.config

  • в AssemblyInfo.cs у меня была [сборка: log4net.Config.XmlConfigurator(ConfigFile = log4net.config, Watch = true)], а в Global.asax Application_Start() у меня был log4net.Config.XmlConfigurator.Configure();

  • нет вывода log4net в Glimpse - вкладка была видна, но затемнена

  • благодаря подсказке, которую я нашел здесь: https://stackoverflow.com/a/4558906/3590792 я изменил Application_Start( ) код для:

    строка l4net = Server.MapPath(~/log4net.config); log4net.Config.XmlConfigurator.ConfigureAndWatch (новый System.IO.FileInfo (l4net));

и Glimpse log4net заработал

person BPDecaf    schedule 30.04.2014