연습: ASP.NET 추적을 System.Diagnostics 추적과 통합
업데이트: 2007년 11월
이 연습에서는 ASP.NET 추적 방법을 System.Diagnostics 추적 방법과 통합하고 모든 추적 메시지를 단일 추적 출력에 작성하는 방법에 대해 설명합니다.
응용 프로그램의 실행 흐름을 추적하고, Web Form 수명 주기의 중요 시점에서 데이터를 표시하고, 응용 프로그램의 다른 구성 요소와 Web Forms이 상호 작용하는 방식을 확인하려면 추적을 사용합니다. 추적을 사용하면 응용 프로그램에 제출된 HTTP 요청 매개 변수, 특정 Web Form의 뷰 상태에 저장되는 메모리의 양 및 기타 유용한 프로파일링 정보 등을 검사할 수 있습니다.
ASP.NET 추적 메커니즘은 ASP.NET 웹 페이지 및 ASP.NET 추적 뷰어(Trace.axd)에 표시되는 메시지를 작성하는 반면 Trace 클래스는 표준 .NET Framework 추적 출력(대개 콘솔 창)에 추적 메시지를 작성하는 데 사용됩니다. ASP.NET 추적 출력을 System.Diagnostics 추적과 통합하여 모든 추적 메시지를 이러한 출력 중 하나로 라우팅하면 Web Forms이 비즈니스 개체 및 다른 구성 요소와 상호 작용하는 방식을 좀 더 쉽게 추적할 수 있습니다.
ASP.NET 추적과 Trace 클래스를 모두 사용하는 일반적인 시나리오에는 중간 계층 비즈니스 개체를 사용하여 데이터 및 비즈니스 규칙과 상호 작용하는 웹 페이지와 엔터프라이즈 서비스(예: 트랜잭션, 큐)를 사용하는 페이지가 포함됩니다. 이러한 경우 비즈니스 및 엔터프라이즈 구성 요소는 페이지를 실행하는 데 중요한 역할을 하며 단일 추적 출력을 사용하여 응용 프로그램의 여러 계층 간에 페이지의 실행 흐름을 모니터링하는 것이 좋습니다.
이 연습에서는 추적 기능을 사용하여 작업합니다. 웹 페이지와 비즈니스 개체를 수정하여 추적 메시지를 작성한 다음 모든 메시지를 단일 추적 출력으로 라우팅합니다.
이 연습에서 수행할 작업은 다음과 같습니다.
데이터를 웹 페이지로 반환할 수 있는 사용자 지정 비즈니스 구성 요소 만들기. 이 구성 요소는 XML 파일에서 데이터를 읽습니다.
사용자 지정 비즈니스 개체를 데이터 소스로 참조하는 웹 페이지 만들기
비즈니스 개체를 참조하는 웹 페이지에 대해 추적을 사용하도록 설정
비즈니스 개체를 참조하는 웹 페이지에 추적 메시지 작성
사용자 지정 비즈니스 개체에서 Trace 메시지 작성
모든 추적 메시지를 단일 출력에 작성하도록 ASP.NET 응용 프로그램 구성
추적 출력 읽기
사전 요구 사항
이 연습을 완료하려면 다음과 같은 요건을 갖추어야 합니다.
- Microsoft .NET Framework 및 기존 ASP.NET 웹 사이트가 필요합니다.
참고: |
---|
이 연습에서는 Microsoft Visual Web Developer 웹 개발 도구 또는 Microsoft Visual Studio와 같은 디자이너를 사용하지 않는 것으로 가정합니다. |
웹 페이지 및 비즈니스 개체 만들기
이 연습에서는 Default.aspx 웹 페이지, AuthorClass 비즈니스 개체 및 Authors.xml XML 데이터 파일을 만듭니다. XML 데이터 파일은 이 연습의 뒷부분에서 추적과 관련된 단계에 필요합니다.
소스 코드를 복사하여 ASP.NET 디렉터리의 파일에 붙여넣을 수 있습니다. 이렇게 하면 Default.aspx 웹 페이지, AuthorClass 비즈니스 개체 및 Authors.xml 파일이 만들어집니다.
Default.aspx 페이지를 만들려면
텍스트 편집기(예: 메모장)를 열고 새 파일을 만듭니다.
다음 코드를 파일에 입력합니다.
<%@ Page Language="VB" %> <html> <form > <asp:objectdatasource id="AuthorsObjectDataSource" typename="PubsClasses.AuthorClass" selectmethod="GetAuthors"/> <asp:gridview id="GridView1" datasourceid="AuthorsObjectDataSource" /> </form> </html>
<%@ Page Language="C#" %> <html> <form > <asp:objectdatasource id="AuthorsObjectDataSource" typename="PubsClasses.AuthorClass" selectmethod="GetAuthors"/> <asp:gridview id="GridView1" datasourceid="AuthorsObjectDataSource" /> </form> </html>
ASP.NET 응용 프로그램 루트 디렉터리에 Default.aspx라는 이름으로 파일을 저장합니다.
Default.aspx 페이지는 AuthorClass라는 비즈니스 개체를 사용하여 XML 데이터와 상호 작용합니다.
AuthorClass 비즈니스 개체를 만들려면
응용 프로그램 루트 디렉터리 아래에 App_Code라는 디렉터리를 만듭니다.
텍스트 편집기(예: 메모장)에서 새 파일을 엽니다.
다음 코드를 파일에 입력합니다.
Imports Microsoft.VisualBasic Imports System Imports System.Web Imports System.Data Namespace PubsClasses Public Class AuthorClass Private dsAuthors As DataSet = _ New System.Data.DataSet("ds1") Private filePath As String = _ HttpContext.Current.Server.MapPath("~/App_Data/authors.xml") Public Sub New() dsAuthors.ReadXml(filePath, Data.XmlReadMode.ReadSchema) End Sub Public Function GetAuthors() As DataSet Return dsAuthors End Function End Class End Namespace
using System; using System.Web; using System.Data; namespace PubsClasses { public class AuthorClass { private DataSet dsAuthors = new DataSet("ds1"); private String filePath = HttpContext.Current.Server.MapPath("~/App_Data/authors.xml"); public AuthorClass() { dsAuthors.ReadXml (filePath, XmlReadMode.ReadSchema); } public DataSet GetAuthors () { return dsAuthors; } } }
App_Code 디렉터리에서 AuthorClass.cs(C#용) 또는 AuthorClass.vb(Microsoft Visual Basic용)라는 이름으로 파일을 저장합니다.
AuthorClass에서 사용하는 데이터 파일은 Authors.xml입니다.
추적을 사용하도록 설정하고 ASP.NET 추적 메시지를 표시하려면
응용 프로그램 루트 디렉터리 아래에 App_Data라는 디렉터리를 만듭니다.
텍스트 편집기(예: 메모장)에서 새 파일을 엽니다.
다음 XML 데이터를 파일에 입력합니다.
XML 파일에는 데이터의 데이터베이스 구조를 식별하는 스키마 정보가 들어 있습니다. 여기에는 키에 대한 기본 키 제약 조건이 포함됩니다.
참고: 비즈니스 구성 요소에는 응용 프로그램에 적합한 방식으로 데이터가 사용될 수 있습니다. 이 연습에서는 편의를 위해 XML 파일을 사용합니다.
<?xml version="1.0" standalone="yes"?> <dsPubs xmlns="http://www.tempuri.org/dsPubs.xsd"> <xs:schema id="dsPubs" targetNamespace="http://www.tempuri.org/dsPubs.xsd" xmlns:mstns="http://www.tempuri.org/dsPubs.xsd" xmlns="http://www.tempuri.org/dsPubs.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified"> <xs:element name="dsPubs" msdata:IsDataSet="true"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="authors"> <xs:complexType> <xs:sequence> <xs:element name="au_id" type="xs:string" /> <xs:element name="au_lname" type="xs:string" /> <xs:element name="au_fname" type="xs:string" /> <xs:element name="au_phone" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> <xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:selector xpath=".//mstns:authors" /> <xs:field xpath="mstns:au_id" /> </xs:unique> </xs:element> </xs:schema> <authors> <au_id>172-32-1176</au_id> <au_lname>White</au_lname> <au_fname>Gerry</au_fname> <au_phone>408 496-7223</au_phone> </authors> <authors> <au_id>213-46-8915</au_id> <au_lname>Green</au_lname> <au_fname>Marjorie</au_fname> <au_phone>415 986-7020</au_phone> </authors> </dsPubs>
App_Data 디렉터리에서 Authors.xml이라는 이름으로 파일을 저장한 다음 닫습니다.
웹 페이지 및 비즈니스 개체에 추적 메시지 추가
Default.aspx 페이지, Authors.xml 데이터 파일 및 AuthorClass 비즈니스 개체를 만들었으면 이제 추적 작업을 시작할 수 있습니다. 코드에 추적 메시지를 추가하기 전에 Default.aspx 페이지에 대해 추적을 사용하도록 설정하십시오.
추적을 사용하도록 설정하고 ASP.NET 추적 메시지를 표시하려면
텍스트 편집기(예: 메모장)에서 Default.aspx 페이지를 엽니다.
@ Page 지시문에 Trace 특성을 추가한 다음 Trace를 true로 설정합니다.
이 선언을 통해 웹 페이지에 대해 ASP.NET 추적이 설정됩니다.
자세한 내용은 방법: ASP.NET 페이지에 대한 추적 활성화를 참조하십시오.
이제 페이지 추적을 사용할 수 있으며 웹 브라우저에서 페이지를 보면 GridView 컨트롤 다음에 추적 출력이 표시됩니다. 두 번째로 표시되는 추적 정보 표에서는 웹 페이지의 실행 경로에 대한 자세한 정보를 보여 줍니다.
추적 출력을 읽는 방법에 대한 자세한 내용은 ASP.NET 추적 정보 읽기 항목을 참조하십시오.
추적 메시지 쓰기
Default.aspx 페이지에서 GridView 컨트롤에 의해 수행되는 데이터 바인딩처럼 기본적인 ASP.NET 작업이 발생하는 경우에 대해 더 잘 이해하려면 웹 페이지와 AuthorClass 비즈니스 개체에 추적 메시지를 추가합니다.
Web Form에서 추적 메시지를 작성하려면
Default.aspx 웹 페이지에서 @ Page 지시문과 <html> 태그 사이에 다음 코드를 입력합니다.
<script > Private Sub Page_Load(sender As Object, e As EventArgs) Trace.WriteLine("ASP.NET TRACE","page_load called.") Trace.WriteLine("ASP.NET TRACE","page_load finished.") End Sub ' Page_Load </script>
<script > private void page_load(object sender, EventArgs e) { Trace.WriteLine("ASP.NET TRACE","page_load called."); Trace.WriteLine("ASP.NET TRACE","page_load finished."); } </script>
참고: 사용 중인 언어에 따라 @ Page 지시문에 언어 특성을 포함해야 할 수도 있습니다.
이러한 추적 메시지는 ASP.NET 추적 출력에 작성되고 Default.aspx 페이지를 다시 보면 추적 정보 섹션의 **"Begin Load"**와 "End Load" 사이에 추적 메시지가 표시됩니다. **"Begin Load"**와 **"End Load"**는 Page_Load 메서드와 연결됩니다.
이제 AuthorClass 비즈니스 개체에 추적 메시지를 추가합니다.
AuthorClass 비즈니스 개체에 추적 메시지를 작성하려면
다음 코드를 AuthorClass 생성자에 입력합니다.
System.Diagnostics.Trace.Write("AuthorClass is created.", "AUTHORCLASS TRACE")
System.Diagnostics.Trace.Write("AuthorClass is created.", "AUTHORCLASS TRACE");
다음 코드를 AuthorClass.GetAuthors 메서드에 입력합니다.
System.Diagnostics.Trace.Write("GetAuthors called.","AUTHORCLASS TRACE")
System.Diagnostics.Trace.Write("GetAuthors called.","AUTHORCLASS TRACE");
참고: ASP.NET TraceContext.Write 메서드를 사용하면 추적 범주가 메서드의 매개 변수 목록에서 추적 메시지 앞에 나옵니다. 그러나 .NET Framework 추적 Write 메서드를 사용하면 추적 메시지가 추적 범주 앞에 나옵니다.
TRACE 컴파일러 옵션을 사용하여 비즈니스 개체를 컴파일하면 이러한 추적 메시지가 시스템 추적 출력에 작성됩니다. ASP.NET 추적 메시지와 달리 이 추적 메시지는 Default.aspx 페이지에 작성되지 않습니다. 이를 테스트하려면 Default.aspx 페이지에서 앞에서 본 추적 정보 표에 이전과 같은 "ASP.NET 추적" 메시지만 나타나는지 확인합니다.
다음 단원에서는 TRACE 옵션이 설정된 상태에서 자동으로 컴파일하고 모든 추적 메시지를 웹 페이지로 라우팅하도록 ASP.NET 웹 응용 프로그램을 구성하는 방법을 배웁니다.
모든 추적 출력을 Web Form으로 라우팅
AuthorClass 비즈니스 개체에 포함된 Trace 메시지를 ASP.NET 추적 출력으로 라우팅하면 요청을 처리하는 동안 AuthorClass가 언제 만들어지고 조작되었는지 알 수 있으며 응용 프로그램에서 수행하는 작업을 좀 더 큰 관점에서 전체적으로 볼 수 있습니다. Trace 메시지를 ASP.NET 웹 페이지로 라우팅하려면 WebPageTraceListener 개체를 추가해야 합니다. 구성을 통해(권장됨) 또는 프로그래밍 방식으로 추적 수신기를 추가할 수 있습니다. 구성을 통해 추적 수신기를 추가하는 방법에 대한 자세한 내용은 <trace>의 <listeners> 요소를 참조하십시오.
다음 절차를 수행하려면 Web.config 파일이 필요합니다. Web.config 파일이 이미 있으면 이 절차를 건너뛰고 그 다음 절차에서 WebPageTraceListener 개체를 추가하십시오.
Web.config 파일을 만들려면
텍스트 편집기(예: 메모장)를 열고 새 파일을 만듭니다.
다음 텍스트를 파일에 입력합니다.
<!-- Web.Config Configuration File --> <configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration>
Default.aspx와 같은 디렉터리에서 Web.config라는 이름으로 파일을 저장합니다.
이제 Trace 메시지를 ASP.NET 추적 출력으로 라우팅할 응용 프로그램에 WebPageTraceListener 개체를 추가합니다.
구성을 통해 응용 프로그램에 WebPageTraceListener를 추가하려면
응용 프로그램의 Web.config 파일을 엽니다.
Web.config 파일에서 <system.web> 섹션 뒤에 다음 코드를 추가합니다.
<system.diagnostics> <trace> <listeners> <add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </listeners> </trace> </system.diagnostics>
이 구성 섹션은 응용 프로그램의 추적 수신기 컬렉션에 WebPageTraceListener 개체를 추가합니다.
추적 수신기를 추가하는 경우 응용 프로그램의 구성 파일을 사용하여 WebPageTraceListener를 추가하는 방법이 권장됩니다. 그러나 프로그래밍 방식으로 추적 수신기를 추가할 수도 있습니다. 이 방법은 응용 프로그램을 추적하기 위해 복잡한 추적 논리와 다양한 유형의 추적 수신기를 사용 중이고 WebPageTraceListener도 그 중 하나인 경우에 특히 유용합니다.
프로그래밍 방식으로 응용 프로그램에 추적 수신기를 추가하려면 Global.asax 파일을 만든 후 다음 단계를 수행하여 수신기를 추가합니다.
Global.asax 파일을 만들고 프로그래밍 방식으로 추적 수신기를 추가하려면
텍스트 편집기(예: 메모장)를 열고 새 파일을 만듭니다.
다음 코드를 파일에 입력합니다.
<%@ Application Language="VB" %> <%@ Import Namespace="System.Web" %> <script > Sub Application_Start(sender As Object, e As EventArgs) ' Code that runs when the application is started. End Sub Sub Application_End(sender As Object, e As EventArgs) ' Code that runs when the application shuts down. End Sub </script>
<%@ Application Language="C#" %> <%@ Import Namespace="System.Web" %> <script > void Application_Start(Object sender, EventArgs e) { // Code that runs when the application is started. } void Application_End(Object sender, EventArgs e) { // Code that runs when the application shuts down. } </script>
응용 프로그램 루트 디렉터리에서 Global.asax라는 이름으로 파일을 저장합니다.
이렇게 하면 기본 Global.asax가 만들어집니다. 이 파일은 응용 프로그램이 시작 또는 중지될 때마다 실행되는 코드가 포함된 컴파일된 모듈입니다.
다음 코드를 Global.asax 파일의 Application_Start 메서드에 입력합니다.
' Create a trace listener for Web forms. Dim gbTraceListener As New WebPageTraceListener() ' Add the event log trace listener to the collection. System.Diagnostics.Trace.Listeners.Add(gbTraceListener)
// Create a trace listener for Web forms. WebPageTraceListener gbTraceListener = new WebPageTraceListener(); // Add the event log trace listener to the collection. System.Diagnostics.Trace.Listeners.Add(gbTraceListener);
이렇게 하면 프로그래밍 방식으로 응용 프로그램의 추적 수신기 컬렉션에 WebPageTraceListener가 추가됩니다.
Default.aspx와 같은 디렉터리에서 Global.aspx라는 이름으로 파일을 저장합니다.
위의 단계를 수행하여 응용 프로그램의 추적 수신기 컬렉션에 WebPageTraceListener를 추가했습니다. 페이지에 대해 추적이 설정될 때마다 ASP.NET에 추적 메시지가 표시되지만 System.Diagnostics 추적 메시지는 명시적 컴파일러 스위치, 즉 TRACE 스위치를 사용하여 해당 추적 메시지가 포함된 코드를 컴파일할 경우에만 작성됩니다. 즉, WebPageTraceListener를 추가했더라도 TRACE 스위치를 사용하여 AuthorClass를 명시적으로 컴파일하지 않으면 추적 메시지가 나타나지 않습니다.
Web.config 파일에 새 섹션을 추가하면 TRACE 스위치를 사용하여 자동으로 컴파일하도록 응용 프로그램을 구성할 수 있습니다.
추적이 설정된 상태에서 자동으로 응용 프로그램을 컴파일하려면
응용 프로그램의 Web.config 파일을 엽니다.
Web.config 파일에서 <system.diagnostics> 섹션 뒤에 다음 코드를 추가합니다.
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/d:TRACE" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="1" /> <compiler language="VB" extension=".vb" compilerOptions="/d:Trace=true" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </compilers> </system.codedom>
기본적으로 이 구성 섹션을 추가하면 응용 프로그램에서 TRACE 옵션을 사용하여 모든 모듈을 컴파일합니다.
이제 Default.aspx 페이지에서 ASP.NET 추적 메시지와 System.Diagnostics 추적 메시지를 모두 볼 수 있습니다. ASP.NET 추적 메시지와 System.Diagnostics 추적 메시지가 나타나지 않으면 AuthorClass 개체를 다시 컴파일해야 합니다.
추적 정보를 통해 웹 페이지 수명 주기 중 PreRender 메서드를 실행하는 동안 AuthorClass 개체가 만들어지고 이 개체의 GetAuthors 메서드가 호출되었음을 알 수 있습니다. 또한 AuthorClass 개체가 만들어질 때 상당한 시간이 경과되었음을 알 수 있습니다. 즉, "Begin PreRender" 메시지가 나타난 후 "AuthorClass is created." 메시지가 나타날 때까지 시간 차이가 큽니다. 이는 AuthorClass의 경우 만들어질 때 Authors.xml 파일을 연 다음 DataSet을 초기화하는데 이 작업은 상대적으로 시간이 많이 소요되기 때문입니다.
다음 단원에서는 모든 추적 메시지를 .NET Framework 추적 출력으로 라우팅하도록 ASP.NET 웹 응용 프로그램을 구성하는 방법을 배웁니다.
모든 추적 출력을 .NET Framework 추적으로 라우팅
ASP.NET 추적 메시지를 콘솔 창, 디스크, Windows 이벤트 로그 또는 다른 추적 메시지 출력 등과 같은 표준 Trace 메시지 출력으로 라우팅할 수 있습니다. Web.config 구성 파일을 사용하여 이 메시지 라우팅을 사용하도록 설정할 수 있습니다.
모든 ASP.NET 추적 메시지를 시스템 추적 출력으로 라우팅하려면
응용 프로그램의 Web.config 파일을 엽니다.
<system.web> 아래의 trace 요소에 writeToDiagnosticsTrace라는 새 특성을 추가한 다음 writeToDiagnosticsTrace를 true로 설정합니다.
<system.web> <trace writeToDiagnosticsTrace="true"/> <customErrors mode="Off"/> </system.web>
이 구성 특성을 설정하면 ASP.NET 추적에서 ASP.NET 추적 메시지를 표준 시스템 추적 출력 메커니즘으로 라우팅합니다.
ASP.NET 및 System.Diagnostics 추적 메시지를 ASP.NET 페이지 외부의 컨텍스트에서 보려면 TextWriterTraceListener 개체를 사용하여 추적 메시지를 파일에 작성합니다.
추적 메시지를 특정 파일에 작성하도록 TextWriterTraceListener 개체를 구성해야 합니다. <trace>의 <listeners>에 대한 <add> 요소의 initializeData 특성을 사용하여 이를 수행할 수 있습니다.
이 연습에서 앞부분에 나온 "모든 추적 출력을 Web Form으로 라우팅"의 두 번째 절차에서 WebPageTraceListener 개체를 추가하기 위해 수행한 단계를 그대로 사용하여 TextWriterTraceListener 개체를 Web.config 파일에 추가한 다음, 응용 프로그램 루트 디렉터리에서 Asptesttrace.log라는 파일에 메시지를 작성하도록 TextWriterTraceListener를 구성합니다.
Global.asax 파일에서 프로그래밍 방식으로 WebPageTraceListener를 추가하지 않았다고 가정하면 Web.config 파일의 <system.diagnostics> 섹션은 다음과 같습니다.
<system.diagnostics> <trace autoflush="true"> <listeners> <add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> <add name="TestTracer" type="System.Diagnostics.TextWriterTraceListener, System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="<app root directory>\Asptesttrace.log" /> </listeners> </trace> </system.diagnostics>
참고: 이전 단계에 나오는 initializeData 특성은 ASP.NET 응용 프로그램 루트 디렉터리에 대한 자리 표시자 값을 사용합니다. 응용 프로그램 루트 디렉터리 이외의 파일에 추적 메시지를 작성하려고 하면 보안 예외가 발생합니다. 기본적으로 ASP.NET에서는 디스크의 응용 프로그램 루트 디렉터리(예: C:\)를 제외한 다른 위치에 파일을 작성할 수 없습니다. 또한 ASP.NET 작업자 프로세스 계정에 추적 로그에 대한 쓰기 권한을 부여해야 할 수도 있습니다.
기본적으로 대상 스트림에 추적 데이터를 작성하려면 추적 버퍼가 채워질 때까지 기다려야 합니다.
ASP.NET 페이지를 요청한 후 바로 추적 로그에서 추적 데이터를 확인하려면 이전 단계에서와 마찬가지로 autoflush 특성을 true로 설정하여 추적 쓰기 작업이 발생할 때마다 버퍼를 플러시해야 합니다.
autoflush 특성의 기본값은 false입니다.
추적 정보 버퍼를 프로그래밍 방식으로 플러시하려면 Flush 메서드를 호출합니다.
참고: 이 연습을 통해 개발한 비즈니스 개체의 경우 Page_Load 메서드에서 Flush 메서드를 호출하고 autoflush 특성이 false이면 페이지 Load 이벤트가 발생한 후에 비즈니스 개체가 렌더링되므로 추적 로그에 추적 데이터가 표시되지 않습니다.
다음 단계
이 연습에서는 ASP.NET 및 System.Diagnostics 추적 기능을 사용하여 모든 추적 메시지를 단일 출력으로 라우팅하는 방법을 보여 주었습니다. 추적 수신기와 출력 및 ASP.NET 계측 기능을 사용하여 계속 테스트할 수 있습니다. 예를 들어, 다음과 같은 작업을 할 수 있습니다.
응용 프로그램에 EventLogTraceListener 개체 추가
이를 수행하려면 WebPageTraceListener와 같은 절차를 사용하는 구성 파일을 통해 또는 프로그래밍 방식으로 EventLogTraceListener 개체를 추가합니다. 이벤트 로그를 열어 응용 프로그램에서 이벤트 로그에 작성한 추적 메시지를 검토할 수 있습니다.
비즈니스 구성 요소에서 XML 파일 대신 데이터베이스 데이터를 사용하여 작업하도록 변경. 이때 페이지의 컨트롤은 변경할 필요가 없습니다.