当您添加调试IP以查看解析为显示页面的模板集合中的调试信息时,它会包含该页面中所有查询的列表。
是否可以访问该对象进行检查?
我正在尝试自动化哪些数据源正在用于哪些页面请求的文档。我们有大量的小型Web应用程序可以访问不同的数据库并具有不同的依赖关系。我希望找到一种方法来自动化这些依赖项的文档,而不必手动审查所有Web应用程序的所有代码。
在页面创建过于实际执行任何包含数据的内容之前,不确定是否创建了对象,但谁知道......
答案 0 :(得分:2)
以下是一段代码,您可以将其添加到模板的末尾,以获取页面上使用的数据源列表:
<cfobject action="CREATE" type="JAVA" class="coldfusion.server.ServiceFactory" name="factory">
<cfset cfdebugger = factory.getDebuggingService()>
<cfset qEvents = cfdebugger.getDebugger().getData()>
<cftry>
<cfquery dbtype="query" name="cfdebug_qryDSN">
SELECT DISTINCT DATASOURCE FROM qEvents WHERE type = 'SqlQuery'
</cfquery>
<cfcatch type="Any">
<cfset cfdebug_qryDSN = queryNew('DATASOURCE')>
</cfcatch>
</cftry>
<cfdump var="#cfdebug_qryDSN#" label="cfdebug_qryDSN">
PS:此片段的大部分灵感来自{cfusion 10 home} \ cfusion \ wwwroot \ WEB-INF \ debug \ classic.cfm。您可以从如何从该文件访问调试器对象/数据中获得一些好主意。
答案 1 :(得分:0)
这个想法适用于使用Application.cfc
的每个应用程序。
Enable Request Debugging Output
。Debugging IP Addresses
,以便每个页面都能收到调试信息。Select Debugging Output Format
设置为classic.cfm
,短路 {cfusion 10 home}\cfusion\wwwroot\WEB-INF\debug\classic.cfm
,方法是<cfreturn>
classic.cfm
中的第一个可执行语句。这将阻止任何页面看到调试输出。Application.cfc::OnRequestEnd()
执行Scott Jibben suggested。您可以将斯科特的想法包含在<cfif IsDebugMode()>
。