Logging errors with the cflog tag

ColdFusion provides extensive capabilities for generating, managing, and viewing log files, as described in Configuring and Administering ColdFusion. It also provides the cflog tag which adds entries to ColdFusion logs.

ColdFusion automatically logs errors to the default logs if you use the default error handlers. In all other cases, use the cflog tag in your error handling code to generate log entries.

The cflog tag lets you specify the following information:

  • A custom file or standard ColdFusion log file in which to write the message.

  • Text to write to the log file. This can include the values of all available error and cfcatch variables.

  • Message severity (type): Information Warning, Fatal, or Error.

  • Whether to log any of the following: application name, thread ID, system date, or system time. By default, all get logged.

For example, you could use a cflog tag in an exception error-handling page to log the error information to an application-specific log file, as in the following page:

<html> 
<head> 
<title>Products - Error</title> 
</head> 
<body> 
 
<h2>Sorry</h2> 
 
<p>An error occurred when you requested this page. 
The error has been logged and we will work to correct the problem. 
We apologize for the inconvenience. </p> 
 
<cflog type="Error" 
        file="myapp_errors" 
        text="Exception error --  
            Exception type: #error.type# 
            Template: #error.template#, 
            Remote Address: #error.remoteAddress#,  
            HTTP Reference: #error.HTTPReferer# 
            Diagnostics: #error.diagnostics#"> 
 
</body> 
</html>

Reviewing the code

The following table describes the highlighted code and its function:

Code

Description

<cflog type="Error" 
    file="myapp_errors" 
    text="Exception error -- 
        Exception type: #error.type# 
        Template: #error.template#, 
        Remote Address: #error.remoteAddress#, 
        HTTP Reference: #error.HTTPReferer# 
        Diagnostics: #error.diagnostics#">

When this page is processed, log an entry in the file myapp_errors.log file in the ColdFusion log directory. Identify the entry as an error message and include an error message that includes the exception type, the path of the page that caused the error, the remote address that called the page, and the error’s diagnostic message.

A log file entry like the following is generated if you try to call a nonexistent custom tag and this page catches the error (line breaks added for clarity):

"Error","web-13","12/19/01","11:29:07",MYAPP,"Exception error --  
        Exception type: coldfusion.runtime.CfErrorWrapper 
        Template: /MYStuff/MyDocs/exceptiontest.cfm, 
        Remote Address: 127.0.0.1,  
        HTTP Reference:  
        Diagnostics: Cannot find CFML template for custom tag testCase. Cannot  
        find CFML template for custom tag testCase. ColdFusion attempted looking  
        in the tree of installed custom tags but did not find a custom tag with  
        this name."

The text consists of a comma-delimited list of the following entries:

  • Log entry type, specified by the cflogtype attribute

  • ID of the thread that was executing

  • Date the entry was written to the log

  • Time the entry was written to the log

  • Application name, as specified in the Application.cfc initialization code (by setting the This.application variable) or by a cfapplication tag (for example, in an Application.cfm file).

  • The message specified by the cflogtext attribute.