Coldfusion记录问题

时间:2009-10-02 16:02:59

标签: logging coldfusion

我的错误会不时出现在我的应用程序日志文件中。

"Error","jrpp-2297","09/30/09","07:40:07","appname","Invalid data  for CFSQLTYPE CF_SQL_BIGINT. The specific sequence of files included or processed is: E:\inetpub\wwwroot\a\viewReport.cfm, line: 56 "

有没有什么方法可以通过表单捕获传递给这个页面的所有参数,这样我就能看出为什么那个特定的值失败了?当我从网站上试用它时处理得很好。

谢谢!

2 个答案:

答案 0 :(得分:3)

如果您想长时间观看此表单的数据,那么您可以使用cfdump和一些可选参数来关注事物:

<cfdump output="fullpathtoyourdumpfile" format="html" var="#FORM#">

如果您想要纯文本转储而不是普通的花式HTML:

<cfdump output="fullpathtoyourdumpfile" format="text" var="#FORM#">

fullpathtyourdump文件应该是文件的完全限定路径(包括使用Windows作为CF平台时的驱动器号),包括文件名。例子:

C:\tmp\myapplog.html
c:\tmp\myapplog.txt
/tmp/myapplog.html
/tmp/myapplog.txt

对于纯文本转储使用.txt,对HTML版本使用.html。如果您使用HTML版本,您应该能够使用远程文件检索或安装目录以查看内容。

此外,您需要确保列出的每个目录都存在,并且由运行ColdFusion的用户可读写。

<强>更新

对于CFMX7,请尝试以下解决方法:

<cfloop list="#FORM.FIELDNAMES#" index="key">

<cfoutput>#key# ----> #evaluate(key)#<br/></cfoutput>

</cfloop>

答案 1 :(得分:0)

如果您间歇性地收到错误,则无法实现,您可以将cfdump的内容捕获到变量,然后记录转储的完整html。然后,您可以抓取日志行的内容并将其放在静态html文件中,并查看cfcatch对象,因为如果您是生成错误的人,则会显示该对象。

要执行此操作,您需要使用cfsavecontent。

<cfsavecontent variable="dumpoutput">
 <cfdump var="#cfcatch#" />
</cfsavecontent>
<cflog file="cfcatchdumps" text="#dumpoutput#" />

执行此操作后,耐心等待下一个错误,然后从日志文件中获取一行内容(它将是一个长行,但它没有任何回车符,因此有点容易抓住),将其粘贴到html文件中并查看它。这将使您对所有标记上下文详细信息和堆栈跟踪的错误有所了解。

警告:这将为日志文件生成大量数据,每个错误可能高达20-40K,这在开发环境中并不是什么大问题,如果发生非常间歇性的话,可能值得深入了解生产,但是,这肯定不是我留在任何地方长期生产使用的东西。 :)