3

新しい Heroku api を使用して、curl を使用してアプリケーションのログをストリーミングしようとしています

Streaming is performed by doing an HTTP GET method on the provided logplex url and retrieving log lines utilizing chunked encoding.

まず、logplex の URL を取得します。

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 呼び出しを行います。

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

永続的な接続が得られましたが、何も来ません...

Transfer-Encoding ヘッダーを指定しないと、ログは取得されますが、接続は閉じられます。

リファレンスで指定されているように、ログをストリーミングすることは本当に可能ですか?

4

1 に答える 1

5

残念ながら、私はそれを書き間違えており、私が信じていたチャンクエンコーディングではありません。CLI と log2viz でこのインターフェイスを使用していますが、残念ながらそれ自体は標準の http ではありません。

基本的に、通常の HTTP リクエストを実行し、HTTP レスポンス ヘッダーを読み戻す必要があります。返されたヘッダーを指定すると、通常はソケットから読み取り、長さがゼロになるまで読み取ります。その時点で、完了したと見なして終了できます。logplex の場合、ブロックすることをためらうので (おそらく無期限に)、先に進んで空の読み取りを返します。次に、完了したら、ソケットを閉じるだけでよいことを期待します。

残念ながら、cURL でこれを行う方法を理解できませんでした。しかし、私たちがこれに取り組んでいるオープン ソースの例を示すことができます。うまくいけば、それが役に立ちます。

少なくとも現在の状況を明確にするのに役立つことを願っています.これを反映するようにドキュメントを更新しようと思います. 詳細なレポートをお寄せいただきありがとうございます。他にご不明な点がございましたら、お気軽にお問い合わせください。

于 2013-05-31T20:41:55.283 に答える