【问题标题】:How can I log *all* ColdFusion scripts and CFCs used?如何记录 *所有* ColdFusion 脚本和使用的 CFC?
【发布时间】:2010-09-26 23:28:27
【问题描述】:

我希望从大型代码库中确定在一段时间内实际使用了哪些文件。我需要了解 CFM 页面和 CFC 以及任何包含的 CFM 文件等。

我知道我可以通过登录 application.cfm 或使用 IIS 来获得一些这些信息,但我仍然会丢失任何包含文件和使用的任何 CFC。

有没有办法让 CF 记录它执行的每个文件?理想情况下,我希望将任何新编码保持在最低限度或仅在一个地方。

谢谢, 夏兰

【问题讨论】:

    标签: iis logging coldfusion


    【解决方案1】:

    嗯,我认为您需要打开调试并创建自定义调试模板。

    调试模板位于:[coldfusiondir]/wwwroot/WEB-INF/debug

    查看classic.cfm 用于在屏幕上显示模板的代码,然后创建一些类似的代码,将每个模板运行记录到合适的数据存储中。

    注意:报告执行时间和 CFC 存在性能问题(在 CFMX6/7 中),因此请确保禁用该设置,并删除所有相关代码。

    事实上,如果这要在 Live 环境中运行(不理想),那么请确保您将自定义模板精简为仅执行此日志记录所需的最少代码。

    【讨论】:

    • 这是迄今为止我听到的最好的解决方案。但是,它需要做一些工作,当我设法实现它时,我可能会在这里发帖。
    【解决方案2】:

    使用调试模板的方法可以工作,但只有在您启用了调试后才能工作。如果代码库很大且笨拙,并且您必须收集此信息的唯一地方是实时的,那么请确保这些模板没有输出任何内容。

    此外,您的 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>
    

    【讨论】:

    • Application.cfm/c 将在每个请求中运行一次 - 即它不会为通过 cfinclude/cfobject 访问的文件运行。
    • 是的,每个请求一次的问题是这个问题的一大缺点。如果你能在 CF Admin 中切换这种类型的登录几个小时然后解析你的日志文件,我会很棒?也许在 CF 9 中 :)
    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多