次のセクションでは、CFML タグおよび関数を使用してデバッグ情報およびトレース情報を表示または非表示にする方法について説明します。
個別クエリのデバッグ情報の生成
Administrator で、 cfquery タグの debug 属性は、デバッグの設定ページの「データベースアクティビティ」設定よりも優先されます。debug 属性が機能するのは、デバッグの設定ページでデバッグ出力を有効にしている場合のみです。
- ColdFusion Administrator で「データベースアクティビティ」を選択しても、debug="No" と指定すれば、そのクエリの SQL および統計はデバッグ出力に表示されません。
- ColdFusion Administrator で「データベースアクティビティ」を選択していなくても、debug="Yes" または debug と指定すれば、そのクエリの SQL および統計がデバッグ出力に表示されます。
例えば、ColdFusion Administrator で「データベースアクティビティ」を選択していなくても、次のコードを使用すると、このクエリについてのみ、クエリ実行時間、返されたレコード数、ColdFusion ページ、タイムスタンプおよびデータソースに送信された SQL ステートメントを表示できます。
<cfquery name="TestQuery" datasource="cfdocexamples" debug> SELECT * FROM TestTable </cfquery>
例えば、頻繁に呼び出されるカスタムタグでクエリを使用している場合は、debug 属性を使用してクエリデバッグ情報の生成を無効にすれば 、 呼び出し元ページのクエリデバッグ情報のみが表示されます。
また、 cfstoredproc タグで debug 属性を指定すれば、ストアドプロシージャ固有のデバッグ情報を表示できます。
cfsetting タグによるデバッグ出力の制御
cfsetting タグの showDebugOutput 属性を使用すると、特定のページのデバッグ出力をオフにできます。この属性でデバッグ出力を制御できるのは、ColdFusion Administrator のデバッグの設定ページでデバッグ出力を有効にしている場合のみです。この属性のデフォルト値は Yes です。次のタグを使用すると、現在のページのすべてのデバッグ出力が表示されなくなります。
<cfsetting showDebugOutput="No">
このタグを Application.cfc ファイルの初期化コードか Application.cfm ページに追加すると、アプリケーションのすべてのデバッグ出力が表示されなくなります。また、特定のページの cfsetting タグで showDebugOutput="Yes" と指定すれば、そのページについてデバッグ出力の設定を上書きできます。逆に、アプリケーションのデバッグをオンのままにし、特定のページで cfsetting showDebugOutput="No" タグを使用すれば、デバッグ出力によってエラーや混乱が発生する可能性のあるページのデバッグを無効にできます。
さらに、ColdFusion Administrator へのアクセス権がなく、ColdFusion Administrator でデバッグが有効にされている場合は、showDebugOutput 属性を使用してデバッグ出力を制御できます。
IsDebugMode 関数によるコードの選択的実行
IsDebugMode 関数は、デバッグが有効な場合に True を返します。この関数を cfif タグの条件で使用すれば、デバッグ出力が有効な場合にのみコードを実行することができます。IsDebugMode 関数を使用すると、デバッグモードで任意のコードを実行できるので、 cftrace タグよりも柔軟に情報を処理および表示できます。
IsDebugMode 関数を使用すると、デバッグが有効な場合のみ、情報を選択的にログに記録できます。ログ出力を制御できるので、トレース情報をブラウザーに表示することなくログに記録することができます。例えば、デバッグが有効な場合に次のコードを実行すると、アプリケーションページ、現在時刻、および 2 つの変数の値が、ログファイル MyAppSilentTrace.log に記録されます。
<cfquery name="MyDBQuery" datasource="cfdocexamples"> SELECT * FROM Employee </cfquery> <cfif IsDebugMode()> <cflog file="MyAppSilentTrace" text="Page: #cgi.script_name#, completed query MyDBQuery; Query Execution time: #cfquery.ExecutionTime# Status: #Application.status#"> </cfif>
デバッグに cfdump タグを頻繁に使用する場合は、このタグを <cfif IsDebugMode()> タグで囲みます。 例えば、<cfif IsDebugMode()><cfdump var=#myVar#></cfif> のようにします。 このようにすると、本番用コードに cfdump タグが残っていても、デバッグ出力が無効なときには表示されなくなります。