2013-05-31 110 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

相關問題