どうも、20代N高生のゆういちです。
今回はherokuのログ情報について色々調べました。
自分なりに整理して書き上げたので、ちょっと参考にしてみてわからない事があれば他の記事をみながら参考にしていただければと思います!
それでは行きましょう!
ログの出力方法
通常の出力コマンドはheroku logs
です。
実行してみると以下のように長文のログ情報が出てきます。
$ heroku logs
yyyy-mm-ddT00:00:00.000000+00:00 heroku[router]: at=info method=GET path="/" host=xxx-xxx-xxx.herokuapp.com request_id=xxx...xxx fwd="xxx.xx.xx.xxx" dyno=web.1 connect=1ms service=6ms status=200 bytes=100 protocol=https
いきなり数行の長文で何が何だかわからないですよね...
この出力されたログの構成はどうなっているのかというと、上と下とで照らし合わせれば分かるかなと。
timestamp source[dyno]: message
- timestamp - ログが出力された日時を表す
- source - ログの発生元を表す。今回はherokuアプリケーションを使用しているので、appですね。
- dyno - sourceより細かい発生元。
- message - メッセージを表す
いたって単純ですね!
ログの出力内容
ログ情報 | 意味 |
---|---|
at | ログの重要度。エラーが発生するとerror と表示される。 |
method | HTTPメソッドのこと。(GET/POST/PUT/DELETE) |
path | HTTPリクエストのリクエストターゲットのパスの一部を表す |
host | HTTPリクエストのHostヘッダの値 |
fwd | クライアントIPアドレス |
request_id | リクエストID。herokuにおいて、クライアントが送信する際にX-Request-IDヘッダとして設定される。 |
dyno | HTTPリクエストを処理した仮想マシンの名称 |
connect | Dynoへの接続に要した時間(ミリ秒) |
service | Dyno接続からレスポンスを受け取るまでに要した時間(ミリ病) |
status | HTTPステータスコード |
bytes | HTTPレスポンス全体の長さ。 |
リアルタイムでログを出力する
都度出力コマンドを出さなくてすみます。
$ heroku logs --tail
特定のDynoのみ表示する
heroku logs --ps api
特定のソースのみ表示する
$ heroku logs --source heroku
ログの行を制限する
デフォルトでは100行表示されます。ログは最大1500行まで取得されますが、それより超えちゃうと古いログが自動的に破棄されます。
$ heroku logs -n 50
あるいは
$ heroku logs --num 50
こんな感じ?
慣れたら--tailと--psなどで組み合わせて実行するのもアリです!
ではまた。
参考URL
Herokuでのlogの表示方法 - nafuruby’s diary
heroku - ログ | heroku Tutorial