1

サービススタックWebサービスにMVCプロファイラーがあり、リクエストがNlogに記録されているのがわかります。

ただし、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();
    }
4

1 に答える 1

1

MiniProfilerはロギングとは関係ありません。プロファイルされた結果が、MiniProfilerビューア(ServiceStackの自動生成されたHTML5レポートページにあります)に表示されるかどうかを制御します。

ここにはログコードは表示されていません(NLogアダプターでServiceStack.Loggingを使用していると想定しています)。AppHostを初期化する前に構成するのが最適な場所です。これにより、すべての静的コンストラクターが構成済みのロギングプロバイダーを使用します。

LogManager.LogFactory = new NLogFactory();
(new AppHost()).Init();
于 2013-02-03T00:05:25.533 に答える