通过 HTTP 在 Web 服务器上拖尾文本文件

问题描述 投票:0回答:5

寻找有关如何解决以下问题的意见。我的 ColdFusion 9 应用程序有一个简单的记录器,可以将文本写入文件。在我的开发机器上,该文件是本地的,因此我可以使用“tail -f”或 CFB 的 TailView 来观看它。我想要一个工具来在它部署在生产服务器上时对其进行监视。问题是:生产是在共享 CF 托管提供商处进行的,该提供商不允许 RDS 文件访问或目录观察程序网关。我想知道一个带有元刷新标签的页面,或者如果我想要更奇特的东西,AJAXy 可以达到相同的效果。想法?是否已经存在这方面的工具?

我可能会尝试这个,但我希望有一些“更完整”的东西:通过http跟踪日志文件

logging coldfusion shared-hosting tail
5个回答
1
投票

您可以使用以下 PHP 脚本:

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

0
投票

以下伪代码受到此 Java 解决方案的启发,并且根本没有经过测试:

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

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

将其放在具有元刷新的页面上,我认为您可能正在做生意。


0
投票

我为我的用例创建了以下 bash 脚本 (tail.sh)

它使用“lynx”获取文件列表,从中获取所需的文件大小,并在无限循环中尝试获取文件的一部分


0
投票

我创建了一个 powershell 脚本

  1. 每 30 秒获取给定 url 的内容
  2. 使用“Range”HTTP 请求标头仅获取特定量的数据。
while ($true) {
    $request = [System.Net.WebRequest]::Create("https://raw.githubusercontent.com/fascynacja/blog-demos/master/gwt-marquee/pom.xml")
    $request.AddRange(-2000)
    $response = $request.GetResponse()
    $stream = $response.GetResponseStream()
    $reader = New-Object System.IO.StreamReader($stream)
    $content = $reader.ReadToEnd()
    $reader.Close()
    $stream.Close()
    $response.Close()
 
    Write-Output $content
    
    Start-Sleep -Seconds 30
}

您可以根据自己的需要调整范围和秒数。另外,如果需要,您可以轻松地为特定搜索词添加颜色模式。您还可以将输出重定向到文件。


-1
投票

我知道这很老套,但是您是否考虑过登录数据库?如果您在表中为日志条目添加时间戳,则可以使用 HTTP 缓存标头向服务器传达您应该看到的新数据。

© www.soinside.com 2019 - 2024. All rights reserved.