我希望从大型代码库中确定在一段时间内实际使用了哪些文件。我需要了解 CFM 页面和 CFC 以及任何包含的 CFM 文件等。
我知道我可以使用登录 application.cfm 或使用 IIS 来获取其中的一些信息,但我仍然会丢失任何包含文件和使用的任何 CFC。
有没有办法让 CF 记录它执行的每个文件?理想情况下,我希望将任何新编码保持在最低限度或仅在一个地方。
谢谢, 夏兰
我希望从大型代码库中确定在一段时间内实际使用了哪些文件。我需要了解 CFM 页面和 CFC 以及任何包含的 CFM 文件等。
我知道我可以使用登录 application.cfm 或使用 IIS 来获取其中的一些信息,但我仍然会丢失任何包含文件和使用的任何 CFC。
有没有办法让 CF 记录它执行的每个文件?理想情况下,我希望将任何新编码保持在最低限度或仅在一个地方。
谢谢, 夏兰
嗯,我认为您需要打开调试并创建自定义调试模板。
调试模板位于:[coldfusiondir]/wwwroot/WEB-INF/debug
查看classic.cfm
用于将模板显示到屏幕的代码,然后创建一些类似的代码,将每个模板运行记录到合适的数据存储中。
注意:报告执行时间和 CFC 存在性能问题(在 CFMX6/7 中),因此请确保禁用该设置,并删除任何相关代码。
事实上,如果这要在 Live 环境中运行(不理想),那么请确保您将自定义模板精简为仅执行此日志记录所需的最少代码。
使用调试模板的方法将有效,但仅在您启用调试时才有效。如果代码库很大且笨拙,并且您必须收集此信息的唯一地方是实时的,那么请确保这些模板没有输出任何内容。
此外,您的 CFC 调用会减慢很多。要非常小心,看看这会如何破坏您的服务器。
就我个人而言,我只会让它更新一个服务器级别的结构,而不仅仅是文件名。
<cfparam name="server.st_FileLog" default="#structNew()#">
<cfparam name="server.st_FileLog[thisFile]" default="1">
Application.cfc 或 Application.cfm 中的这两行可能就是这样做的。
然后只需要一段单独的代码来转储代码。
<cfoutput><code>#structKeyList(server.st_FileLog,chr(13))#</code></cfoutput>