Heroku应用程序日志流

Ant*_*ine 3 api curl heroku

我正在尝试使用新的Heroku api通过curl传输我的应用程序的日志:这是文档中所说的内容(https://devcenter.heroku.com/articles/platform-api-reference#app

Streaming is performed by doing an HTTP GET method on the provided logplex url and retrieving log lines utilizing chunked encoding.
Run Code Online (Sandbox Code Playgroud)

因此,首先我检索logplex网址:

curl -X POST https://api.heroku.com/apps/my-app/log-sessions \
-H "Accept: application/vnd.heroku+json; version=3" \
-H "Authorization:XXX" -v
Run Code Online (Sandbox Code Playgroud)

然后,我在响应中得到如下信息:

"logplex_url":"https://logplex.heroku.com/sessions/abcdef-079b-4264-a83c-031feb31bfc2?srv=132456798"
Run Code Online (Sandbox Code Playgroud)

所以我又打了个电话:

curl -X GET "https://logplex.heroku.com/sessions/abcdef-8a7e-442f-a164-4c64e845b62d?srv=123456798" -H "Transfer-Encoding: chunked"
Run Code Online (Sandbox Code Playgroud)

我一直保持联系,但是什么都没有...

如果未指定Transfer-Encoding标头,则会获取日志,但连接会关闭。

是否真的可以像参考中指定的那样流式传输日志?

gee*_*mus 5

不幸的是,有可能我写错了它,并且它不是我所相信的分块编码。我们确实在CLI和log2viz中使用了此接口,但不幸的是,它本身不是标准的http。

基本上,您应该执行正常的HTTP请求并读回HTTP响应标头。给定返回的标头,通常可以从套接字读取,直到读取的长度为零为止,此时您可以假定已完成并完成。在logplex情况下,我们会保持沉默(可能无限期),因此我们继续进行操作并返回空读取。然后我们只希望完成后就可以简单地关闭套接字。

不幸的是,我无法弄清楚如何使用cURL。但是我可以指出开放源代码中解决此问题的示例,希望对您有所帮助。

希望这至少有助于弄清当前情况,我将尝试更新文档以反映这一情况。感谢您提供详细的报告,如果您还有其他问题需要帮助,请与我联系。