.NEt专家博客!

【Longkin】ASP.NET应用程序跟踪---在代码里访问跟踪信息(四)

上一篇 / 下一篇  2008-06-02 14:18:02 / 个人分类:ASP.NET

ASP.NETHttpContext.Current.Trace跟踪机制是将跟踪消息显示在ASP.NET网页或者写入ASP.NET跟踪查看器中,而System.Diagnostics.Trace类用于将跟踪消息写入标准的.NET Framework跟踪输出(通常是一个控制台窗口)中。但在实际的开发中,有些业务对象没有界面,若要更好地跟踪页面没有界面的业务对象的交互,可以将ASP.NET跟踪输出与System.Diagnostics.Trace跟踪进行集成,以将所有跟踪消息传送到其中的一个输出中,便于查看。

1.将System.Diagnostics.Trace跟踪消息输出到ASP.NET

System.Diagnostics.Trace跟踪消息输出到ASP.NET,需要设置配置文件如下:

<?xml version="1.0"?>

<configuration>

  <system.web>

    <trace enabled="true"/>

  </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>

</configuration>

App_Code文件夹下添加一个类TraceTest.cs

#define TRACE

using System;

public class TraceTest

{

         public TraceTest()

         {

    System.Diagnostics.Trace.WriteLine("Diagnostics跟踪:实例化阶段");

         }

  public void GetTest()

  {

    System.Diagnostics.Trace.WriteLine("Diagnostics跟踪:调用方法阶段");

  }

}

添加一个Web窗体,内容如下:

<%@ Page Language="C#"  Trace="true"%>

<script. runat="server">

  protected void Page_Load(object sender, EventArgs e)

  {

    TraceTest tt = new TraceTest();

    tt.GetTest();

    Trace.Write("HttpContext跟踪消息");

  }

</script>

浏览这个Web窗体文件时,可以看到Diagnostics跟踪消息已经输出到页面上了,结果如图15-2所示。

15-2 Diagnostics跟踪消息输出到ASP.NET

注意:若要在C#中启用跟踪,请在编译代码时将/d:TRACE标志添加到编译器命令行中,或者可以将#define TRACE添加到文件的顶部。在Visual Basic中,将/d:TRACE=True标志添加到编译器命令行。也可以在配置文件中进行配置编译选项:

<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>

2.将ASP.NET跟踪消息输出到标准System.Diagnostics.Trace跟踪输出

有时候为了存储的方便,需要将ASP.NET跟踪消息传送到System.Diagnostics.Trace消息的标准输出,它可以是控制台窗口、磁盘、Windows事件日志或任何其他跟踪消息输出。

以下例子就是将ASP.NET跟踪消息输出到Windows事件查看器的“应用程序”里面。

修改配置文件如下:

<?xml version="1.0"?>

<configuration>

  <system.web>

    <trace enabled="true" writeToDiagnosticsTrace="true"/>

  </system.web>

</configuration>

Global.asax里的Application_OnStart事件里写:

public void Application_OnStart()

{

  System.Diagnostics.EventLogTraceListener elt = new System.Diagnostics.EventLogTraceListener("ASPNETTrace");

  System.Diagnostics.Trace.Listeners.Add(elt);

}

默认情况下,ASP.NET工作进程的用户令牌是ASPNETIIS 6.0上是NETWORK SERVICE)。由于该账户不具有创建事件源的正确用户权限,因此,需要手工在注册表的应用程序事件日志下创建一个事件源(用其他方法也可以):

1)单击“开始”,然后单击“运行”。

2)在“打开”文本框中,键入regedit,按下回车键。

3)找到以下注册表子项:HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services "Eventlog"Application

4)鼠标右键单击“Application”子项,在弹出的快捷菜单中指向“新建”命令,然后单击“项”。

5)键入ASPNETTrace作为该项的名称(与Global.asaxEventLogTraceListener事件源名称一致)。

6)关闭注册表编辑器。

浏览前面的Web窗体文件,然后到Windows事件查看器里面,就可以看到ASP.NET输出的跟踪信息,如图15-3所示。

15-3 ASP.NET跟踪信息输出到Diagnostics跟踪标准输出上


TAG:

引用 删除 Guest   /   2008-07-04 09:57:07
5
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-12  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 46833
  • 日志数: 1203
  • 影音数: 7
  • 文件数: 1
  • 建立时间: 2008-01-04
  • 更新时间: 2008-10-10

RSS订阅

Open Toolbar