通过http跟踪日志文件

时间:2009-10-29 18:07:33

标签: http logging text utilities tail

出于安全原因(我是开发人员),我没有命令行访问我们的生成服务器,其中写入了日志文件。我可以,但是可以通过HTTP访问这些日志文件。是否有“tail -f”方式的实用程序可以仅使用HTTP“跟随”纯文本文件?

5 个答案:

答案 0 :(得分:6)

如果HTTP服务器接受返回资源部分的请求,则可以执行此操作。例如,如果HTTP请求包含标头:

  

范围:字节= -500

响应将包含资源的最后500个字节。您可以获取它,然后将其解析为行等。我不知道任何现成的客户端会为您执行此操作 - 我会编写一个脚本来完成这项工作。

您可以使用Hurl来试验标题(来自公开资源)。

答案 1 :(得分:1)

我为了同样的目的写了一个bash脚本。你可以在https://github.com/maksim07/url-tail

找到它

答案 2 :(得分:1)

您可以使用小型Java实用程序使用Apache HTTP Library通过Http读取日志文件。

HttpClient client = HttpClientBuilder.create().build();
    HttpGet request = new HttpGet(uri);
    HttpResponse response = client.execute(request);
    BufferedReader rd = new BufferedReader(new InputStreamReader(
            response.getEntity().getContent()));
    String s = "";
    while ((s = rd.readLine()) != null) {
       //Process the line
    }

答案 3 :(得分:0)

您可以使用PsExec在远程计算机上执行命令。 Windows的tail命令可以在http://tailforwin32.sourceforge.net/

找到

如果必须是HTTP,您可以编写轻量级Web服务来轻松实现。 例如,从第0行到第200行读取指定文件中的文本。

答案 4 :(得分:0)

我编写了一个简单的bash脚本,每2秒获取一次URL内容,然后与本地文件output.txt进行比较,然后将diff附加到同一文件中

我想在Jenkins管道中流式传输AWS Amplification日志

while true; do comm -13 --output-delimiter="" <(cat output.txt) <(curl -s "$URL") >> output.txt; sleep 2; done

别忘了先创建空文件output.txt文件

: > output.txt

查看流:

tail -f output.txt

更新:

我在这里使用wget找到了更好的解决方案:

while true; do wget -ca -o /dev/null -O output.txt "$URL"; sleep 2; done

https://superuser.com/a/514078/603774