📄 tracelogpage.aspx
字号:
<%@ Register TagPrefix="Acme" Namespace="Acme" Assembly="QSTools" %>
<%@ Register TagPrefix="Acme" TagName="SourceRef" Src="/quickstart/aspplus/util/SrcRef.ascx"%>
<!-- #include virtual="/quickstart/aspplus/include/header.inc" -->
<h4>页输出的跟踪记录</h4>
页级跟踪使您能够在启用跟踪后将调试语句直接写入页的输出并有条件地运行调试代码。若要为页启用跟踪,请在页代码的顶部包括以下指令:
<p>
<div class="code"><pre>
<%@ Page Trace="true"%>
</pre></div>
跟踪语句也可以按类别组织,使用 <b>Page</b> ??á?μ? <b>TraceMode</b> 属性。如果没有定义 <b>TraceMode</b> 属性,默认值为 <b>SortByTime</b>。
<div class="code"><pre>
<%@ Page Trace="true" TraceMode="SortByCategory" %>
</pre></div>
<p>
以下示例显示启用页级跟踪时的默认输出。注意,ASP.NET 将重要位置的执行时间信息插入页的执行生命周期:
<p>
<Acme:LangSwitch runat="server">
<CsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/trace/CS/trace1.aspx"
ViewSource="/quickstart/aspplus/samples/trace/trace1.src"
Icon="/quickstart/aspplus/images/pagetrace1.gif"
Caption="C# Trace1.aspx"
runat="server" />
</CsTemplate>
<VbTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/trace/VB/trace1.aspx"
ViewSource="/quickstart/aspplus/samples/trace/trace1.src"
Icon="/quickstart/aspplus/images/pagetrace1.gif"
Caption="VB Trace1.aspx"
runat="server" />
</VbTemplate>
<JsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/trace/JS/trace1.aspx"
ViewSource="/quickstart/aspplus/samples/trace/trace1.src"
Icon="/quickstart/aspplus/images/pagetrace1.gif"
Caption="JScript Trace1.aspx"
runat="server" />
</JsTemplate>
</Acme:LangSwitch>
<p>
页公开 <b>Trace</b> 属性(<b>TraceContext</b> 类型),该属性可用来将调试语句输出到页输出(如果启用了跟踪)。使用 <b>TraceContext</b> 后,可以用 <b>Trace.Write</b> 和 <b>Trace.Warn</b> 方法写调试语句,而每个方法都采用消息字符串或类别和消息字符串。<b>Trace.Warn</b> 语句与 <b>Trace.Write</b> 语句相同,只是它们以<span style="color:red">红色</span>输出。
<p><Acme:TabControl runat="server">
<Tab Name="C#">
// Trace(Message)
Trace.Write("Begging User Code...");
...
Trace.Warn("Array count is null!");
// Trace(Category, Message)
Trace.Write("Custom Trace","Beginning User Code...");
...
Trace.Warn("Custom Trace","Array count is null!");
</Tab>
<Tab Name="VB">
' Trace(Message)
Trace.Write("Begging User Code...")
...
Trace.Warn("Array count is Nothing!")
' Trace(Category, Message)
Trace.Write("Custom Trace","Beginning User Code...")
...
Trace.Warn("Custom Trace","Array count is null!")
</Tab>
<Tab Name="JScript">
// Trace(Message)
Trace.Write("Begging User Code...");
...
Trace.Warn("Array count is null!");
// Trace(Category, Message)
Trace.Write("Custom Trace","Beginning User Code...");
...
Trace.Warn("Custom Trace","Array count is null!");
</Tab>
</Acme:TabControl><p>
<p>
禁用跟踪时(即 <b>Page</b> 指令上的 <b>Trace="false"</b> 或不存在),这些语句不运行且客户端浏览器中不显示跟踪输出。这样,就可以在生产代码中保留调试语句,并在以后有条件地启用它们。
<p>
可能经常需要运行额外的代码来构造传递到 <b>Trace.Write</b> 或 <b>Trace.Warn</b> 方法的语句;在这些方法中,仅当为页启用了跟踪时此代码才应运行。为此,<b>Page</b> 公开一个 Boolean 属性 <b>Trace.IsEnabled</b>,该属性仅在为页启用了跟踪时才返回真。应首先检查该属性,以保证调试代码只有在跟踪打开时才能运行。
<p><Acme:TabControl runat="server">
<Tab Name="C#">
if (Trace.IsEnabled) {
for (int i=0; i<ds.Tables["Categories"].Rows.Count; i++) {
Trace.Write("ProductCategory",ds.Tables["Categories"].Rows[i][0].ToString());
}
}
</Tab>
<Tab Name="VB">
If Trace.IsEnabled Then
For i=0 To ds.Tables("Categories").Rows.Count-1
Trace.Write("ProductCategory",ds.Tables("Categories").Rows(i)(0).ToString())
Next
End if
</Tab>
<Tab Name="JScript">
if (Trace.IsEnabled) {
for (var i:int =0; i<ds.Tables["Categories"].Rows.Count; i++) {
Trace.Write("ProductCategory",ds.Tables["Categories"].Rows[i][0].ToString());
}
}
</Tab>
</Acme:TabControl><p>
<p>
下面的示例显示如何使用 <b>Trace.Write</b> 和 <b>Trace.Warn</b> 输出调试语句。此外,还显示如何使用 <b>Trace.IsEnabled</b> 属性有条件地运行额外的调试代码。在此示例中,跟踪信息已经按类别排序。
<p>
<Acme:LangSwitch runat="server">
<CsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/trace/CS/trace2.aspx"
ViewSource="/quickstart/aspplus/samples/trace/trace2.src"
Icon="/quickstart/aspplus/images/pagetrace2.gif"
Caption="C# Trace2.aspx"
runat="server" />
</CsTemplate>
<VbTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/trace/VB/trace2.aspx"
ViewSource="/quickstart/aspplus/samples/trace/trace2.src"
Icon="/quickstart/aspplus/images/pagetrace2.gif"
Caption="VB Trace2.aspx"
runat="server" />
</VbTemplate>
<JsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/trace/JS/trace2.aspx"
ViewSource="/quickstart/aspplus/samples/trace/trace2.src"
Icon="/quickstart/aspplus/images/pagetrace2.gif"
Caption="JScript Trace2.aspx"
runat="server" />
</JsTemplate>
</Acme:LangSwitch>
<p>
ASP.NET 还提供了为整个应用程序而不是单页启用跟踪的方法。有关应用程序级跟踪的更多信息,请单击<a href="tracelogapp.aspx">此处</a>。
<h4>本节小结</h4>
<ol>
<li>页级跟踪通过顶级 <b>Page</b>指令上的 <b>Trace="true"</b> 属性启用。
<li>页级跟踪使您能够将调试语句写为页的客户端输出的一部分。跟踪语句通过 <b>Trace.Write</b> 和 <b>Trace.Warn</b> 方法输出,并为每个语句传递类别和消息。
<li>调试代码可以根据是否为页启用了跟踪来有条件地运行。使用页的 <b>Trace.IsEnabled</b> 属性确定是否启用了跟踪。
</ol>
<!-- #include virtual="/quickstart/aspplus/include/footer.inc" -->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -