Testing 有没有一种方法可以在实时代码中切换代码以进行测试?

Testing 有没有一种方法可以在实时代码中切换代码以进行测试?,testing,coldfusion,Testing,Coldfusion,我有一个coldfusion网站,有一次我们把它放进了一个日志中——每当运行某种类型的代码时,它都会被记录下来。现在我们想把它取出来,但仍然可以选择把它放回去,所以我们计划在每次(可能有数百个)记录这段代码时查找它,并注释掉记录代码。这对我来说似乎相当乏味,我想知道是否有某种方法可以将代码标记为测试,并通过在一个地方更改设置来自动启用/禁用它。。。我想我在其他语言中也见过类似的功能。这在ColdFusion中可能吗?如果您有ColdFusion 9.0.1并且使用自定义日志,则可以通过按Admi

我有一个coldfusion网站,有一次我们把它放进了一个日志中——每当运行某种类型的代码时,它都会被记录下来。现在我们想把它取出来,但仍然可以选择把它放回去,所以我们计划在每次(可能有数百个)记录这段代码时查找它,并注释掉记录代码。这对我来说似乎相当乏味,我想知道是否有某种方法可以将代码标记为测试,并通过在一个地方更改设置来自动启用/禁用它。。。我想我在其他语言中也见过类似的功能。这在ColdFusion中可能吗?

如果您有ColdFusion 9.0.1并且使用自定义日志,则可以通过按Administrator中的(停止)按钮停止登录这些日志。除此之外,我不认为有什么调试/生产选项可以在部署时禁用这些选项。您可以在Eclipse中使用regexp进行大规模搜索/替换,并使用cflog标记包装cflog,询问它是调试模式还是生产模式,并且可以在应用程序启动时在应用程序范围中设置


据我所知,cflog在后台使用log4j,可能有一些隐藏的方法可以从cfml中使用log4j的功能。

如果您有ColdFusion 9.0.1,并且使用自定义日志,您可以通过按Administrator中的(stop)按钮停止登录这些日志。除此之外,我不认为有什么调试/生产选项可以在部署时禁用这些选项。您可以在Eclipse中使用regexp进行大规模搜索/替换,并使用cflog标记包装cflog,询问它是调试模式还是生产模式,并且可以在应用程序启动时在应用程序范围中设置


据我所知,cflog在后台使用log4j,可能有一些隐藏的方法可以从cfml使用log4j的功能。

我处理这个问题的方法是配置某种全局应用程序变量(例如,
doLogging
),您可以在需要时打开和关闭并检查。如果设置为
true
,则记录,否则不记录

例如,在
Application.cfc
中,可以设置此变量:

<cfcomponent displayname="Application" output="false">


 <cfset APPLICATION.doLogging= false />

 <cffunction name="onRequestStart" access="public" output="false"> 

  <cfif structKeyExists(URL, "toggleLogging")>
   <cfif APPLICATION.doLogging>
    <cfset APPLICATION.doLogging = false />
   <cfelse>
    <cfset APPLICATION.doLogging = true />
   </cfif>

  </cfif>

 </cffunction>

</cfcomponent>

然后检查代码中需要的位置:

<cfif APPLICATION.doLogging>
    <cflog file="foo" text="bar" />
</cfif> 

虽然要使用这个新方法,您必须更改现有代码,但将来管理它会更容易

希望有帮助


编辑:将变量名更改为更合理的名称,并添加了一个使用示例

我处理这个问题的方法是配置某种全局应用程序变量(例如,
doLogging
),您可以在需要时打开和关闭并进行检查。如果设置为
true
,则记录,否则不记录

例如,在
Application.cfc
中,可以设置此变量:

<cfcomponent displayname="Application" output="false">


 <cfset APPLICATION.doLogging= false />

 <cffunction name="onRequestStart" access="public" output="false"> 

  <cfif structKeyExists(URL, "toggleLogging")>
   <cfif APPLICATION.doLogging>
    <cfset APPLICATION.doLogging = false />
   <cfelse>
    <cfset APPLICATION.doLogging = true />
   </cfif>

  </cfif>

 </cffunction>

</cfcomponent>

然后检查代码中需要的位置:

<cfif APPLICATION.doLogging>
    <cflog file="foo" text="bar" />
</cfif> 

虽然要使用这个新方法,您必须更改现有代码,但将来管理它会更容易

希望有帮助


编辑:将变量名更改为更合理的名称,并添加了一个使用示例

调查,它生成自己的日志,并从ColdFusion管理员打开和关闭。禁用时,ColdFusion将忽略标记

调查,它生成自己的日志,并从ColdFusion管理员打开和关闭。禁用时,ColdFusion将忽略标记

您可以使用IsDebugMode()函数,如果打开ColdFusion调试,它将返回true;如果关闭,它将返回false。

您可以使用IsDebugMode()函数,如果打开ColdFusion调试,它将返回true;如果关闭,它将返回false。

我认为这是一个好主意,但我会将cfif和cflog调用包装在CFC中,这或多或少是我的建议,但我会避免使用toggle参数。使用显式的开或关状态(例如url.doLogging=1),这样您就不必跟踪日志记录是开还是关。所有公平点。想法是一样的,但实施过程可能会被整理。实际上,我会将这个检查和(可能的)日志包装在一个自定义标记中,因为我讨厌在CFC中直接引用应用程序范围的想法。我承认你可以把它传进来,但有时在代码深处,这会变得非常混乱。好吧,我想我的回答说的几乎是一样的。我不明白的是:为什么URL变量?如何在工作流的URL范围中设置该变量?例如,您有指向example.com/aboutus网站“About page”的链接,以及如何设置它?@zarko在查询字符串example.com/aboutus?dologging=1中我认为这是个好主意,但我会将cfif和cflog调用包装在CFC中。这或多或少是我的建议,但我会避免使用切换参数。使用显式的开或关状态(例如url.doLogging=1),这样您就不必跟踪日志记录是开还是关。所有公平点。想法是一样的,但实施过程可能会被整理。实际上,我会将这个检查和(可能的)日志包装在一个自定义标记中,因为我讨厌在CFC中直接引用应用程序范围的想法。我承认你可以把它传进来,但有时在代码深处,这会变得非常混乱。好吧,我想我的回答说的几乎是一样的。我不明白的是:为什么URL变量?如何在工作流的URL范围中设置该变量?例如,您有指向网站example.com/aboutus的“About page”的链接,以及如何设置它?@zarko在查询字符串example.com/aboutus?dologging=1Avoid cftrace中使用所有可能的方法!它搞砸了远程通话、无线数据链路、coldfire,我甚至记不起还有什么……我想如果它打开了?但是调试通常会产生这个问题。。。你能详细解释一下吗?尽一切可能避免cftrace!它搞砸了远程通话、无线数据链路、coldfire,我甚至记不起还有什么……我想如果它打开了?但是调试