2011-01-20 10 views
5

私はMicrosoft Enterpriseライブラリのログを使用してC#でSQL DBにイベントを記録しています。このレコードを分析目的で使用しています。analytics in C#

では、C#で分析する方法はありません。たとえば、「SQL Server 2008のMicrosoft StreamInsight」などです。

別の方法は、Googleアナリティクスが使用しているHTMLコードにJavascriptを埋め込むことです。しかし、このようにして、すべてのログデータをHTTP投稿のログ記録サーバーに送信する必要があります。

おかげで、私は興味深い発見

+0

デスクトップソフトウェアをトラッキングする場合は、http://www.trackerbird.comを試すことができます – Dive50

答えて

2

ことの一つは、あなた自身のユーザーを追跡したい場合は、アクションフィルタを実装することであるということです。

ASP.NET MVC 3を使用している場合は、このフィルタをグローバルフィルタとして登録するだけで、各コントローラのアクションに対するすべてのアクセスを記録できます。

全体のHttpContextは、これらのメソッドで使用できます。

public class TrackerFilterAttribute : ActionFilterAttribute 
{ 

    public TrackerFilterAttribute() 
    { 
    } 

    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     base.OnActionExecuting(filterContext); 

     //TODO: Do my tracking here. 
    } 
} 

そして、これは次のように呼び出すことができます。

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
     filters.Add(new TrackerFilterAttribute()); 
    } 

    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

    } 

    protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 
    } 
} 
0

Analyticsは、サーバーベースのツールである - それは大量のデータを、サーバー関係として使用すると、通常はC#でそれをしませんユーティリティははるかに優れています。

0

StreamInsightを使用して、Webサイトで分析を実行できます。ページには、SIにメッセージを送信し、関心のあるWebサーバーからperfmonカウンタを収集するカスタムコードを持つことができます。この情報をリアルタイムで分析して、パフォーマンスと負荷をプロアクティブに監視できます。 つまり、StreamInsightはリアルタイム分析専用です。長期的な分析のために、別のツールを利用したいと考えています。