Using the cftrace tag to trace execution

The cftrace tag displays and logs debugging data about the state of your application at the time the cftace tag executes. You use it to provide "snapshots" of specific information as your application runs.

About the cftrace tag

The cftrace tag provides the following information:

A typical cftrace tag might look like the following:

<cftrace category="UDF End" inline = "True" var = "MyStatus" 
text = "GetRecords UDF call has completed">

You can display the cftrace tag output in either or both of the following ways:

The cftrace tag executes only if you select Enable Debugging on the ColdFusion Administrator Debugging Settings page. To display the trace results in the debugging output, you must also specify Tracing Information on the Debugging Settings page; otherwise, the trace information is logged and inline traces are displayed, but no trace information appears in the debugging output.

Note:   When you use in-line trace tags, ColdFusion sends the page to the browser after all page processing is completed, but before it displays the debugging output from the debug template. As a result, if an error occurs after a trace tag but before the end of the page, ColdFusion might not display the trace for that tag.

An in-line trace messages look like the following:

An in-line trace message

The following table lists the displayed information:
Entry
Meaning

  The Information icon for the logging severity type 

Trace type (severity) specified in the cftrace call; in this case, Information.
[CFTRACE 13:21:11.011] 
Time when the cftrace tag executed.
[501 ms]
Time taken for processing the current request to the point of the cftrace tag.
[C:\CusionMX\wwwroot\MYStuff\
NeoDocs\tractest.cfm]
Path in the web server of the page that contains the cftrace tag.
@ line:14
The line number of the cftrace tag.
[UDF End]
Value of the cftrace tag category attribute.
GetRecords UDF call has completed
The cftrace tag text attribute with any variables replaced with their values.
MyStatus Success
Name and value of the variable specified by the cftrace tag var attribute.

ColdFusion logs all cftrace output to the file logs\cftrace.log in your ColdFusion installation directory.

A log file entry looks like the following:

"Information","web-29","04/01/02","13:21:11","MyApp","[501 ms (1st trace)] [C:\CFusionMX\wwwroot\MYStuff\NeoDocs\tractest.cfm @ line: 14] - [UDF End] [MyStatus = Success] GetRecords UDF call has completed "

This entry is in standard ColdFusion log format, with comma-delimited fields inside double-quote characters. The information displayed in the trace output is in the last, message, field.

The following table lists the contents of the trace message and the log entries. For more information on the log file format, see "Logging errors with the cflog tag," in Chapter 14.
Entry
Meaning
Information
The Severity specified in the cftrace call.
web-29
Server thread that executed the code.
04/01/02
Date the trace was logged.
13:21:11
Time the trace was logged.
MyApp
The application name, as specified in a cfapplication tag.
501 ms (1st trace)]
The time ColdFusion took to process the current request up to the cftrace tag, This is the first cftrace tag processed in this request. If there had been a previous cftrace tag, the parentheses would contain the number of milliseconds between when the previous cftrace tag ran and when this tag ran.
[C:\CFusionMX\wwwroot\MYStuff\NeoDocs\tractest.cfm @ line: 14]
Path of the page on which the trace tag is located and the line number of the cftrace tag on the page.
[UDF End]
Value of the cftrace tag category attribute.
[MyStatus = Success]
Name and value of the variable specified by the cftrace tag var attribute. If the variable is a complex data type, such as an array or structure, the log contains the variable value and the number of entries at the top level of the variable, such as the number of top-level structure keys.
GetRecords UDF call has completed
The cftrace tag text attribute with any variables replaced with their values.

Using tracing

As its name indicates, the cftrace tag is designed to help you trace the execution of your application. It can help you do any of several things:

Calling the cftrace tag

The cftrace tag takes the following attributes. All attributes are optional.
Attribute
Purpose
abort
A Boolean value. If you specify True, ColdFusion stops processing the current request immediately after the tag. This attribute is the equivalent of placing a cfabort tag immediately after the cftrace tag. The default is False.If this attribute is True, the output of the cftrace call appears only in the cftrace.log file. The line in the file includes the text "[ABORTED]".
category
A text string specifying a user-defined trace type category. This attribute lets you identify or process multiple trace lines by categories. For example, you could sort entries in a log according to the category.
The category attribute is designed to identify the general purpose of the trace point. For example, you might identify the point where a custom tag returns processing to the calling page with a "Custom Tag End" category. You can also use finer categories; for example, by identifying the specific custom tag name in the category.
You can include simple ColdFusion variables, but not arrays, structures, or objects, in the category text by enclosing the variable name in pound signs (#).
inline
A Boolean value. If you specify True, ColdFusion displays trace output in-line in the page. The default is False.
The inline attribute lets you display the trace results at the place that the cftrace call is processed. This provides a visual cue directly in the ColdFusion page display.
Trace output also appears in a section in the debugging information display.
text
A text message describing this trace point. You can include simple ColdFusion variables, but not arrays, structures, or objects, in the text output by enclosing the variable name in pound signs (#).
type
A ColdFusion logging severity type. The inline trace display and dockable.cfm output format show a symbol for each type. The default debugging output shows the type name, which is also used in the log file. The type name must be one of the following:

The Information icon for the logging severity type Information (default)

The Warning icon for the logging severity type Warning

The Error icon for the logging severity type Error

The Fatal Information icon for the logging severity type Fatal Information

var
The name of a single variable that you want displayed. This attribute can specify a simple variable, such as a string, or a complex variable, such as a structure name. Do not surround the variable name in pound signs.
Complex variables are displayed in inline output in cfdump format; the debugging display and log file report the number of elements in the complex variable, instead of any values.
You can use this attribute to display an internal variable that the page does not normally show, or an intermediate value of a variable before the page processes it further.
To display a function return value, put the function inside the message. Do not use the function in the var attribute, because the attribute cannot evaluate functions.

Note:   If you specify inline trace output, and a cftrace tag is inside a cfsilent tag block, ColdFusion does not display the trace information in line, but does include it in the standard debugging display.

The following cftrace tag displays the information shown in the example output and log entry in the "About the cftrace tag" section:

<cftrace abort="False" category="UDF End" inline = "True" text = "GetRecords UDF
  call has completed" var = "MyStatus">

Comments