2011-05-31 127 views
6

寻找关于如何解决以下问题的输入。我的ColdFusion 9应用程序有一个简单的记录器,可以将文本写入文件。在我的开发机器上,该文件是本地的,所以我可以使用'tail -f'或CFB的TailView来观看它。我想要一个工具在部署在生产服务器上时观察它。 catch:生产是在共享的CF主机提供商不允许RDS文件访问或目录观察者网关。我想知道一个带有元刷新标签的页面,或者如果我想获得更多的花式,AJAXy可以达到同样的效果。思考?任何已经存在的工具?通过HTTP在Web服务器上追踪文本文件

我可以尝试用这一点,但我希望有东西在那里“更完整”:following a log file over http

+0

看看http://www.coldfusionjedi.com/index.cfm/2009/4/12/Using-ColdFusion-to-get-the-文件结尾 - 您只需要每分钟左右添加一次刷新。 – 2011-05-31 15:28:41

+0

您可以尝试HTML5的Se rver-Sent Events,如果你想要好的流媒体解决方案。 – Henry 2011-05-31 17:13:28

回答

0

下面的伪代码由this Java solution的启发,并没有在所有被测试:

if (NOT structKeyExists(application, "log") { 
    application.log = fileOpen('log.txt', 'read') 
} 

while(NOT FileisEOF(application.log)) { 
    writeOutput(fileReadLine(application.log) & "<br/>"); 
} 

把这个放在一个带有元刷新的页面上,我想你可能是在做生意。

+0

谢谢,orangepips。日志文件通常有问题,例如它们很大。我不想重复发送相同的1MB数据来获得最新的10行。我现在正在考虑纯粹使用AJAX和HTTP的HEAD请求来查看Content-Length的客户端。如果该值已经从先前的值改变,则使用HTTP范围字段进行GET,以仅将更新后的数据附加到DOM。似乎应该已经存在的东西,所以我正在谷歌搜索...... – DaveBurns 2011-05-31 15:51:48

+0

你不是反复发送相同的数据,因为文件引用只创建一次并且保存到应用程序范围中。所以每个刷新只显示新添加的行。 – orangepips 2011-05-31 16:18:26

+0

啊,当然。您如何看待上述情况将处理日志翻转? – DaveBurns 2011-05-31 19:07:56

-1

我知道这是相当古老的学校,但你有没有考虑过登录到数据库?如果您为表中的日志条目添加时间戳,则可以使用HTTP缓存标头与服务器通信应该看到哪些新数据。

+1

它跨越了我的想法。登录到数据库是人们喜欢或憎恨的事情之一 - 不知何故,它会变得虔诚。我是那些感觉太重量级的人之一。讨论的好话题 - 谢谢。 – DaveBurns 2011-06-01 19:17:09

1

您可以将下面的PHP脚本:

<?php 
header("Content-Type: text/plain"); 
set_time_limit(0); 
passthru("tail -F -n +0 log.txt"); 
?> 
+0

我在/ var/log/syslog上的Mac OS X上试过这个,在浏览器窗口中没有任何东西出现,直到我停止php服务器。任何想法如何定期刷新输出? – 2014-04-08 18:19:04

0

我创建以下bash脚本我用例(tail.sh

它使用“山猫”获取文件的列表,从中获得文件大小需要,并在无限循环试图获得部分文件

相关问题