我想创建一个日志文件。我试过但它给我看错了。有人可以帮忙吗?我在这里显示完整的代码:
请看这一行。我不知道发生了什么,可以输出错误:
<cffile action="WRITE" file="#expandpath('API.log')#"
output="#filecontent#" addnewline="Yes" fixnewline="No"
编辑:我试过,它向我显示错误:
在第213行的第213行找到无效的CFML构造.ColdFusion 正在查看以下文字:
''
CFML编译器正在处理:
A cffile tag beginning on line 213, column 2.
主要错误在这一行:
<cffile action="WRITE" file="#expandpath('Info.log')#"
output="#filecontent#" addnewline="Yes" fixnewline="No"
请告诉我发生了什么事?
答案 0 :(得分:3)
一些事情。
如果你澄清你的问题,我将取消我的投票。
对您的代码进行肤浅的一瞥表明您正在尝试写出变量fileContent
,但实际上您并没有设置该变量。在没有看到错误的情况下,无法知道这是否是问题,或者是在未包含的代码中创建变量。
另一个考虑因素是你在这里稍微重新发明了轮子。 ColdFusion有一个内置的<cflog>
标记或writeLog()
语句,用于写入日志文件。
=====
更新(根据问题的更新)
这是你得到的编译错误,错误的行不是你在代码中指定的行(@ pastebin),这有点奇怪。你能确认第213行是<cffile>
行吗?并且您可以完整地再现该行(您引用的片段不完整)。但基本上错误信息告诉你出了什么问题:你的代码中有语法错误。它可能在错误消息所说的特定语句中(行和列),虽然有时取决于代码,但CF编译器可能会混淆并且前一行中的语法错误可能会报告为比实际文件更靠下文件是。但对于初学者来说,发布整行代码,而不仅仅是它的第一部分。
答案 1 :(得分:1)
评论tl; dr版本 - 这个答案有效,但是提问者开始询问有关新错误的问题,他被要求提出一个新问题。
的答案:强> 的
我在你发布的链接中没有看到这一行(我搜索了api.log
)。 Invalid CFML construct
通常表示您遇到语法错误,通常会忘记结束引号,第二磅或关闭标记(大于)。如果以下建议不起作用,请查看包含cffile的行的上方或下方,以查找结束对的缺失部分。
您发布的代码:
<cffile action="WRITE" file="#expandpath('API.log')#" output="#filecontent#" addnewline="Yes" fixnewline="No"
...没有关闭大于关闭您的标签。如果这是你的实际代码,我会怀疑这是问题所在。
<cffile ... >
^^^ this is missing right here
如果您不打算采用Adam的建议并使用cflog(您应该这样做),您也可能需要action="append"
,否则您将继续使用fileContent的内容覆盖该文件。
<强> ==编辑== 强>
另一方面,这不会解决您的问题,但您应该使用cfqueryparam,尤其是在使用用户输入的数据时。
例如:
Select *
FROM Purchasers
WHERE PurchaserID = #PurchaserID#
应该是
Select *
FROM Purchasers
WHERE PurchaserID = <cfqueryparam cfsqltype="cf_sql_integer" value="#PurchaserID#">