Windows 2003 上的 Coldfusion 8.0.1
是否有人知道如何手动或以编程方式可靠地从 \ColdFusion8\logs 目录中删除或移动日志文件?
如果不尝试 30 次,在帐户管理中删除它们几乎不会成功。归档它们会留下一个空文件,这使得很难直观地扫描文件夹以查找新问题。
停止 CF 服务是我发现的唯一可靠的方法,但这在生产服务器上不是一种选择。
我们尝试在日志文件名中添加文件日期,希望 CF 会在一段时间后释放该文件,但这并没有起作用,文件仍被 CF 进程锁定。
我知道有像 unlocker 这样的实用程序,但我认为它们可能会终止 cf/jrun 进程。
有什么方法可以停止并重新启动日志记录过程或任何其他方法?
谢谢
答案1
在 Windows 上,我不知道有什么方法可以在不停止服务的情况下执行此操作,因为进程会保留该文件。像 unlocker 这样的程序可能会让您删除该文件,但我不确定当它尝试重写该文件时是否会引起混乱。
答案2
当我阅读你的问题时,我想到日志轮换,即日志将达到一定的(可配置的)大小,然后被新文件替换,并将其名称更改为包含序列号。
谷歌搜索后,这篇帖子由 Sean Corfield 撰写,它描述了 ColdFusion 内置的日志轮换。听起来它可以配置来帮助你完成你想要的事情:
在 ColdFusion 管理器的“调试和日志记录”>“日志记录设置”下,您可以设置日志文件轮换的大小以及要保留的过去日志文件的数量。
最大文件大小(KB)-“当文件达到此大小时,它将自动存档。”
最大档案数量 - “达到此限制后,文件将按照从最旧到最新的顺序删除。”
默认情况下,最大文件大小设置为 5000,因此每当日志文件达到(大约) 5Mb 时,它就会被存档(轮换),并且默认情况下会保留最后 10 个存档(除了当前日志)。
如果您更改设置,它会影响任何新创建的日志文件,但不会影响任何现有的日志文件 - 除非您重新启动 ColdFusion。
答案3
ColdFusion 锁定它们。ColdFusion 可以删除它们。创建一个自定义模板来处理所需的日志备份和删除,然后将其添加为 ColdFusion 计划任务。
答案4
史蒂文是对的,无论何时您想删除日志文件,您都可以运行以下代码。
您可以尝试以下代码:
<cfset logDir ="path of the log directory">
<cfoutput>
<cfdirectory action="list" directory="#logDir#" name="qry" filter="*.log">
<cfloop Query="qry">
<cffile action="delete" file="#logDir##qry.Name#">
</cfloop>
</cfoutput>