2013-02-02 106 views
1

我在我的服务堆栈Web服务中有MVC分析器,并且我看到请求被记录到Nlog。Ormlite未使用ServiceStack MVC分析器进行分析

但是,当我试图剖析我的PostgreSQL数据库时,没有生成日志。

我有我的global.asax.cs:

 var dbConnectionFactory = new OrmLiteConnectionFactory(
      "Server=127.0.0.1;Port=5432;Database=mydatabase;User 
              Id=id;Password=password;") 

             { 
              ConnectionFilter = x => new 
             ProfiledDbConnection(x, Profiler.Current) 
             }; 

     builder.RegisterInstance(dbConnectionFactory). 
         ExternallyOwned().As<IDbConnectionFactory>(); 

     var autofacContainer = builder.Build(); 
     //set Autofac as default Dependency Resolver for application 
     DependencyResolver.SetResolver(new 
            AutofacDependencyResolver(autofacContainer)); 

protected void Application_BeginRequest() 
    { 
     if (Request.IsLocal) 
     { 
      Profiler.Start(); 
     } 
    } 

    protected void Application_EndRequest(object src, EventArgs e) 
    { 
     if (Profiler.Current != null) 
     { 
      Logger.Debug("profiling result id:{0}\nresult:{1}", Profiler.Current.Id,Profiler.Current.Render()); 
     } 
     Profiler.Stop(); 
    } 
+0

你真的使用ServiceStack https://github.com/ServiceStack/ServiceStack?因为'DependencyResolver.SetResolver'是一个ASP.NET MVC的东西,并且ASP.NET'System.Web.HttpApplication'上的'Application_BeginRequest'和'Application_EndRequest'事件... – nemesv

+0

是的,从我记得服务栈可以暴露web在MVC中托管的服务。我从https://github.com/ServiceStack/ServiceStack/wiki/Built-in-profiling复制了应用程序beginRequest和endRequest –

回答

1

的MiniProfiler是不相关的记录,它的控制异型结果是否是在可见MiniProfiler浏览器(位于ServiceStack's auto-generated HTML5 Report pages)。

您在这里没有显示任何日志代码(我假设您使用的是带有NLog适配器的ServiceStack.Logging)。最好的地方,配置它是你在初始化之前APPHOST因此,所有的静态构造函数使用配置的日志提供者,即:

LogManager.LogFactory = new NLogFactory(); 
(new AppHost()).Init(); 
+0

谢谢。我以为我使用的是ILog界面,但发现它是在另一个程序集中定义的,因此ServiceStack.Logging没有被使用。我现在要切换到ServiceStack.Logging.NLog。从你的回答中,我错误地认为sql分析将被写入到Nlog文件中?我目前正在运行一个Flex客户端,需要配置postgres。 –

+1

在Profiler中没有完成日志记录(它与它无关),可能在你指向的OrmLite中记录[在这里](https://github.com/ServiceStack/ServiceStack.OrmLite/blob /master/src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs#L32),它发生在** Debug **版本的OrmLite中。 – mythz

+0

为了获得调试版本,我必须将源代码放到调试中,或者可以调试构建二进制文件吗? –