ASP.NET 2.0Tracing 성능 개선

  • asp.net Tracing 은 더 정확한 윤각을 위해6자에서 18자로정확성을 증대
  • asp.net 페이지 단위 trace 와 일반적인 base class library (BCL) 인 System.Diagnostics.Trace 에 대한 Trace

Page 단위 Tracing

asp.net tracing 은 페이지별로 Trace="true" 을 어떤asp.net 페이지든지간에 page 지시자에 추가하여 가능하게끔 할 수 있습니다.

<%@ Page Language="C#" Trace="true" TraceMode = "SortByCategory" Inherits = "System.Web.UI.Page" CodeFile="Default.aspx.cs" %>

추가적으로 SortByCategory 나 SortByTime을 TraceMode 의 attribute 에 추가할 수 있습니다.

SortByTime 은 어플리케이션에 대한 대부분의 cpu 시간을 가져오는 메소드들을 보기 위해 사용할 수 있습니다. Trace.IsEnabled 속성을 사용하여 자동적으로 trace 를 가능하게끔 할 수 도 있습니다.

Application Tracing

web.config 환경설정 파일에 tracing 의 설정을 추가하여 전체 어플리케이션에 trace 를 적용할 수 있습니다. 예를 들어 pageOutput="false" , requestLimit="20" 이라고 사용하게 되면 trace 정보는 20 번의 요청에 대해 저장하고 pageOutput 의 attribute 를 false 로 설정했기 때문에 페이지상에서는 볼 수 없습니다.

<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="false" />
<authentication mode="Windows" />
<trace enabled ="true" pageOutput ="false" requestLimit ="20" traceMode ="SortByTime " />
</system.web>
</configuration>

페이지 단위 설정은 web.config 보다 우선되어 집니다. 따라서 enable="false" 라고 web.config 에 설정을 한 다음에, page 상에 trace="true" 라고 설정하면 tracing 이 발생됩니다.

Trace Data 보기

Tracing 은 trace.axd 에 의해 호출된 특별한 페이지의 요청에 의해 어플리케이션 레벨에서 다중 페이지의 요청을 볼 수 있습니다. asp.net 이 trace.axd 에 대한 http 요청을 감지하게 되면 request 은 페이지에 의한것 보다 TraceHandler 에 의해 취급되어 집니다.

웹사이트를 생성하시고 Page_Load 이벤트에 Trace.Write() 메소드를 호출하게 되면 아래와 같이 web.config 에서 tracing 이 가능하게 됩니다.

<system.web>
<compilation debug="false" />
<authentication mode="Windows" />
<trace enabled ="true" pageOutput ="true" />
</system.web>

protected void Page_Load(object sender, EventArgs e)
{
System.Diagnostics.Trace.Write("This is Page_Load method!");

}

page 을 실행하게 되면 브라우저에서 거대한 양의 trace 정보를 볼 수 있습니다. 왜냐면 PageOutput 이 true 로 설정되어 있기 때문입니다.

이미지를 클릭하면 원본을 보실 수 있습니다.

Trace.write 로 부터 메시지는 Begin Load의 후와 before End Load 의 전까지 보여줍니다. 11개의 다른 섹션은 많은 양의 trace 정보를 제공해 줍니다.

Request Details: 이 세션은 asp.net Session.ID 에 포함 되어 있으며, 요청과 응답의 문자 인코딩과 HTTPconversation의반환된 상태 코드

TraceInformation:

이 세션은 http 응답의 실행주기 동안에 호출된 메소드들의 모든 Trace.write 가 포함되어 있으며 timing 에 대한상당량의 정보를 포함하고 있습니다. 이 timing 정보는 실행시간이 길게 소요된 어플리케이션에서 메소드에 대한 검색이나 분석할때 귀중한 자료가 됩니다.

이미지를 클릭하면 원본을 보실 수 있습니다.

나머지는 msdn 을 참고하시기 바라며... 그중에..

Trace.axd:

page 출력에 대한 tracing 은 현재 페이지의 요청에 대한 수집된 데이터를 오직 보여줍니다.하지만 모든 요청에 대한 자세한 정보를 수집하기를 원한다면 Trace.axd 를 사용할 필요가 있습니다. trace.axd 툴을 호출하기 위해 해당 url 을 사용하면 됩니다.

http://localhost/application-name/trace.axd.

간단하게 trace.axd 와 함께 url 에 해당된페이지 주소을 적절히변경해 주면 됩니다.

실행하면 아래와 같습니다.

이미지를 클릭하면 원본을 보실 수 있습니다.

<trace enabled ="true" requestLimit ="20" pageOutput ="true"/>

Trace.axd 는 모든 요청에 대한 모든 tracing 정보를 보여줍니다. 위의 그림을 보면 3개의 요청이 이 어플리케이션에 의해 만들어 졌으며, 우측의 header 는 "Remaining:7" 라고 가리키고 있습니다. 이 의미는 어플레케이션에 대한 tracing 이 중지되기 전에 더 남은 요청의 7개 있다는 의미입니다. 최종 요청 후, tracing 데이터는 trace.axd 페이지로 부터 "Clear Current Trace" 를 클릭하거나 어플리케이션 재활용할때 저장하지 않습니다. 요청 제한은 web.config 에서 requestLimit속성값에기재할 수 있습니다.

Trace forwarding

<trace enabled ="true" requestLimit ="20" writeToDiagnosticsTrace ="true " pageOutput ="true"/>

writeToDiagnosticsTrace 를 true 로 설정할때, System.Web.UI.Page.Trace(the ASP.NET TraceContent) 이 모두 호출됩니다. 또한 System.Diagnostics.Trace.Write 로 가며, 모든 일반적인 TraceListeners 이 사용가능하게끔 합니다. 심플한 writeToDiagnosticsTrace 셋팅은 base class library등과 함께 기능적으로 asp.net 의 tracing 을 연결합니다.

새로운 Trace Listeners

asp.net 2.0 에서 WebPageTraceListener 은 System.Diagnostics.TraceListener에서 파생되었으며,이는 System.Diagnostics.Trace.Write 에서 호출한 컴포넌트로부터 자동적으로 tracing 정보를 불러옵니다. 이는 asp.net 어플리케이션의 context 에서 tracing 출력을 보거나 대부분의 일반적인 trace 제공자를 사용하여 컴포넌트를 사용하게끔 합니다. WebPageTraceListener 은 아래와 같이 web.config 에 추가 합니다.

<system.diagnostics>
<trace autoflush ="false" indentsize ="4">
<listeners>
<add name="webListeners"
type="System.Web.WebPageTraceListener, System.Web" />
</listeners>
</trace>

</system.diagnostics>

XmlWriterTraceListener

XmlWriterTraceListener 은 TextWriterTraceListener 에서 파생되었으며, xml 파일에 강력한 이름으로 되어 있습니다. 생성된 xml 은 형식화 된 형식은 아닙니다. 특별히 root 노드를 가지고 있지 않으며 단지 peer 노드의 collection 입니다.

DelimitedListTraceListener

DelimitedListTraceListener 은 TextWriterTraceListener 에서 파생되었으며, CSV 파일값처럼 콤마로 구분되어져 있습니다.

* 잘못된 부분이나 추가할 부분이 있으면 꼬리말로 남겨주시면 감사하겠습니다.

감사합니다.

===============================

작성자 : 심재운

카페 : cafe.daum.net/aspdotnet

메일 : shimpark@gmail.com

===============================

Posted by 퓨전마법사
,