Heroku应用程序日志流

时间:2013-05-31 01:24:27

标签: api curl heroku

我正在尝试使用新的Heroku api使用curl流式传输我的应用程序的日志: 以下是doc(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.

首先我检索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

然后我在回复中得到这样的东西:

"logplex_url":"https://logplex.heroku.com/sessions/abcdef-079b-4264-a83c-031feb31bfc2?srv=132456798"

所以我又打了个电话:

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

我有一个持久的联系但没有任何结果......

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

是否真的可以流式传输日志,就像引用中指定的那样?

1 个答案:

答案 0 :(得分:4)

有可能,遗憾的是我写错了,而且我认为它不是分块编码。我们确实在CLI和log2viz中使用了这个接口,但遗憾的是它不是标准的http本身。

基本上,您应该执行正常的HTTP请求并回读HTTP响应标头。鉴于返回的标题,您通常会从套接字读取,直到您读取零长度,此时您可以假设已完成并完成。在logplex的情况下,我们保持沉默(可能无限期),所以我们继续并返回空读。然后我们只希望你完成后可以关闭套接字。

不幸的是我无法弄清楚如何用cURL做到这一点。但我可以在我们的开源中指出我们解决这个问题的例子,希望这会有所帮助。

希望至少有助于澄清当前的情况,我会尝试更新文档来反映这一点。感谢您提供详细报告,如果您有其他问题我可以告诉我们。