3

我正在尝试让 Glimpse.Log4Net 在现有的 ASP.Net MVC v4 项目(在 VS2010 中)中工作,遵循此处此处的文档,但尽管该解决方案编译并运行 Glimpse 并且 log4net 似乎工作正常,但我可以'在我期望的 Glimpse 窗口中看不到 log4net 的内容,如第二个链接中页面末尾附近所示。

我已经使用这种方法对 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");
  }
}

在 web.config 中:

<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>
4

3 回答 3

2

该软件包已于2013 年 5 月更新到 1.0 版,该版本在我的 asp.net mvc4 应用程序中对我来说很好用。

当没有附加到GlimpseAppender. 这有几个可能的原因:

  • 没有GlimpseAppender配置- 这发生在我身上,因为我有一个自定义 log4net 配置
  • 在您的消息被记录后,在您的控制器中某处进行了重定向。您的典型RedirectResult通过客户端重定向,从而产生新的请求。当前 http 请求的GlimpseAppender唯一日志消息,因此您不会看到重定向之前的任何消息。(注意:因此,如果您执行 post-redirect-get,最有趣的日志消息不在glimpse 日志选项卡中)

然后,当然,没有记录消息的“通常” log4net原因。但我认为这个问题的题外话。

于 2013-12-19T16:25:02.073 回答
1

log4net Glimpse 插件由Jess Chadwick创建,尚未与最新版本的 Glimpse 保持同步。

您将希望在 MVC4 中使用 1.1 版本的 Glimpse,但 log4net 插件尚未更新。

好消息是Glimpse.Log4Net 是开源的,因此您应该能够轻松更新它以使用新接口。我什至可能会在下周亲自更新它。

于 2013-03-22T20:06:12.047 回答
0

万一有人正在寻找有关此问题的更多信息-对我有用的方法:

  • VS 2013,MVC4,一瞥 1.8.5,log4net 1.2.11.0

  • 使用单独的 log4net.config 文件

  • 在 AssemblyInfo.cs 我有 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 在 Global.asax Application_Start() 我有 log4net.Config.XmlConfigurator.Configure();

  • Glimpse 中没有 log4net 输出 - 该选项卡可见但已涂黑

  • 感谢我在这里找到的提示:https ://stackoverflow.com/a/4558906/3590792我将 Application_Start() 代码更改为:

    字符串 l4net = Server.MapPath("~/log4net.config"); log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(l4net));

和 Glimpse log4net 开始工作

于 2014-04-30T20:22:01.377 回答