2013-05-31 73 views
2

我试图使用新的API的Heroku使用curl以流我的应用程序的日志: 这里是在DOC说(https://devcenter.heroku.com/articles/platform-api-reference#app的Heroku应用程序日志流

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头,我得到的日志,但连接关闭。

真的有可能流式传输日志,就像它在参考中指定的一样吗?

回答

4

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

基本上你应该做一个正常的HTTP请求并读回HTTP响应头。考虑到返回的头文件,您通常会从套接字读取数据,直到读取长度为零,此时您可以假定您已完成并完成。在logplex情况下,我们默默无闻地阻止(也许无限期地),所以我们继续并返回一个空的读取。然后我们只是期望当你完成后,你可以简单地关闭套接字。

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

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

+0

此外,根据您的使用情况,您可能会更好地使用日志排水渠。但我们还没有机会将这些添加到新的公共API中。你可以在这里看到如何使用它们:https://devcenter.heroku.com/articles/logging#syslog-drains – geemus

相关问题