2012-07-04 4 views
2

mvc에서 추적을 사용하고 싶습니다. 특히 특정 조건이 충족되면 페이지에 추적을 표시하려고합니다.MVC 특정 요청에 대해서만 추적

단일 요청의 컨텍스트에서 요청할 경우 System.Diagnostics.Trace 쓰기를 표시 할 수 있습니까?

답변

3

불행히도 에는 요청별로 해결하려는 조건에 따라 추적을 설정/해제 할 수있는 방법이 없습니다. 그것은 전부 아니면 전혀없는 접근 방식입니다. 나는 말했다

매우MVC MiniProfiler합니다 ( Stack Exchange Data Explorer에 대중에게 특히, 스택 Exchange 사이트에 여기에 사용) 권장합니다.

MiniProfiler screenshot

그리고 당신은 당 요청으로 프로파일을 설정할 수 있습니다 :

당신은 기본적으로 같은 페이지에 렌더링을 얻을

using StackExchange.Profiling; 
...  
protected void Application_BeginRequest() 
{ 
    if (Request.IsLocal) 
    { 
     MiniProfiler.Start(); 
    } 
} 

구문은 약간 다릅니다 Trace 클래스를 사용하면 다음과 같이 using 문을 사용해야합니다.

using (profiler.Step("Set page title")) 
{ 
    ViewBag.Title = "Home Page"; 
} 

이것이 근본적으로 다른 작업이라는 이유 때문입니다. 추적 할 때 특정 시점에 정보 조각을 쓰고 있습니다. 프로파일 링 할 때 시간 세그먼트를보고 있으며 using 문을 사용하면 해당 세그먼트의 범위를 지정할 수 있습니다.

그것은 조금 잔인한 수도 있지만, 나는 기꺼이 (표시되는 정보의 비 간섭 특성뿐만 아니라 때문에 프로파일 측면의 Trace 이상 Trace를이 사용하는 거라고 페이지를 만드는 고약한 버릇이있다 매우 이상하게 보일).

0

필자는 필자의 수업을 통해 로거를 전달한 다음 필요한 경우 해당 정보를 컨트롤러에 조건부로 표시하는 방법을 사용했습니다.

컨테이너를 사용하여 내 로거 인스턴스를 HttpContext의 범위에 바인딩 한 다음 내 뷰 모델로 펌핑했습니다.

관련 문제