CFML でのデバッグ情報の制御

次のセクションでは、CFML タグおよび関数を使用してデバッグ情報およびトレース情報を表示または非表示にする方法について説明します。

個別クエリのデバッグ情報の生成

Administrator で、 cfquery タグの  debug  属性は、デバッグの設定ページの「データベースアクティビティ」設定よりも優先されます。debug 属性が機能するのは、デバッグの設定ページでデバッグ出力を有効にしている場合のみです。

  • ColdFusion Administrator で「データベースアクティビティ」を選択しても、debug="No" と指定すれば、そのクエリの SQL および統計はデバッグ出力に表示されません。
  • ColdFusion Administrator で「データベースアクティビティ」を選択していなくても、debug="Yes" または debug と指定すれば、そのクエリの SQL および統計がデバッグ出力に表示されます。
    例えば、ColdFusion Administrator で「データベースアクティビティ」を選択していなくても、次のコードを使用すると、このクエリについてのみ、クエリ実行時間、返されたレコード数、ColdFusion ページ、タイムスタンプおよびデータソースに送信された SQL ステートメントを表示できます。
<cfquery name=&quot;TestQuery&quot; datasource=&quot;cfdocexamples&quot; debug> 
SELECT * FROM TestTable 
</cfquery>

例えば、頻繁に呼び出されるカスタムタグでクエリを使用している場合は、debug 属性を使用してクエリデバッグ情報の生成を無効にすれば 、  呼び出し元ページのクエリデバッグ情報のみが表示されます。
また、 cfstoredproc タグで debug 属性を指定すれば、ストアドプロシージャ固有のデバッグ情報を表示できます。

cfsetting タグによるデバッグ出力の制御

cfsetting タグの  showDebugOutput  属性を使用すると、特定のページのデバッグ出力をオフにできます。この属性でデバッグ出力を制御できるのは、ColdFusion Administrator のデバッグの設定ページでデバッグ出力を有効にしている場合のみです。この属性のデフォルト値は Yes です。次のタグを使用すると、現在のページのすべてのデバッグ出力が表示されなくなります。

<cfsetting showDebugOutput=&quot;No&quot;>

このタグを 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=&quot;MyDBQuery&quot; datasource=&quot;cfdocexamples&quot;> 
SELECT * 
FROM Employee 
</cfquery> 
<cfif IsDebugMode()> 
<cflog file=&quot;MyAppSilentTrace&quot; text=&quot;Page: #cgi.script_name#, 
completed query MyDBQuery; Query Execution time: 
#cfquery.ExecutionTime# Status: #Application.status#&quot;> 
</cfif>
注意:

デバッグに  cfdump  タグを頻繁に使用する場合は、このタグを <cfif IsDebugMode()> タグで囲みます。 例えば、<cfif IsDebugMode()><cfdump var=#myVar#></cfif> のようにします。 このようにすると、本番用コードに cfdump タグが残っていても、デバッグ出力が無効なときには表示されなくなります。

 Adobe

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン