首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 Trace 追蹤資訊程式碼存取:TraceFinished 事件與 TraceContextRecord 完整應用

     編輯:關於ASP.NET

ASP.NET 2.0 引入 TraceContext.TraceFinished 事件,讓開發者能在所有追蹤資料收集完成後,以程式碼存取、過濾、自訂輸出追蹤資訊,極大擴展診斷彈性。

核心類別與事件

  • TraceContext:頁面層級追蹤上下文 (Page.Trace / Context.Trace)。
  • TraceContextEventArgs:事件參數,屬性 TraceRecords 為 TraceContextRecord 集合。
  • TraceContextRecord:單筆追蹤記錄,含 Category、Message、IsWarning、ErrorInfo、TraceTimestamp 等屬性。

C# 完整範例:自訂 HTML 列表輸出

<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
    Trace.TraceFinished += OnTraceFinished;
    Trace.Write("自定義類別", "自定義追蹤訊息");
    Trace.Warn("警告類別", "這是一個警告");
}

private void OnTraceFinished(object sender, TraceContextEventArgs e)
{
    Response.Write("<ul>");
    foreach (TraceContextRecord record in e.TraceRecords)
    {
        string css = record.IsWarning ? "style='color:red'" : "";
        Response.Write($"<li {css}>類別:{record.Category} 訊息:{record.Message} 時間:{record.TraceTimestamp}</li>");
    }
    Response.Write("</ul>");
}
</script>

VB.NET 版本

<%@ Page Language="VB" %>
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    AddHandler Trace.TraceFinished, AddressOf OnTraceFinished
    Trace.Write("自定義類別", "自定義追蹤訊息")
End Sub

Private Sub OnTraceFinished(ByVal sender As Object, ByVal e As TraceContextEventArgs)
    Response.Write("<ul>")
    For Each record As TraceContextRecord In e.TraceRecords
        Dim css As String = If(record.IsWarning, "style='color:red'", "")
        Response.Write($"<li {css}>類別:{record.Category} 訊息:{record.Message}</li>")
    Next
    Response.Write("</ul>")
End Sub
</script>

進階應用場景

場景實作方式
寫入資料庫/日誌檔在 OnTraceFinished 中批次 Insert TraceRecords
條件式通知偵測特定錯誤/警告模式,發送 Email/Slack 警報
效能分析儀表板蒐集 TraceTimestamp 差值,計算各階段耗時,輸出 JSON 供前端圖表
生產環境安全輸出僅在特定 IP/角色輸出追蹤,避免洩露敏感資訊

注意事項

  • 需在 web.config 啟用追蹤:<trace enabled="true" pageOutput="false" /> (pageOutput=false 避免預設輸出干擾自訂邏輯)。
  • 事件在 Page.Render 之前觸發,此時 Response 仍可寫入。
  • 大量追蹤記錄可能影響記憶體,生產環境建議搭配 trace mostRecent="true" requestLimit="100" /> 限制保留筆數。

善用 TraceFinished 事件,能將追蹤從被動檢視轉為主動監控與分析平台的資料來源。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved