LoginSignup
16
9

More than 3 years have passed since last update.

エラー時のHerokuのlogの見方

Last updated at Posted at 2019-10-23

HerokuにデプロイしたWebサイトがひらけない

Application errorが発生した。

logを開いて詳細を見ろとあるが、logの見方がそもそもわからないので調べてみた。

このようなエラーが発生した。解読してみる。

2019-10-23T12:26:25.860762+00:00 heroku[router]: at=error code=H10 
desc="App crashed" method=GET path="/favicon.ico" 
host=urog.herokuapp.com request_id=2da7814a-4064-4aa8-9424-2dc03bbd8e7c 
fwd="150.46.200.24" dyno= connect= service= status=503 bytes= protocol=https

Heroku logの読み方

ログはこのような形式で出力される。

timestamp source[dyno]: message

timestamp:ログの出力時刻
source:ログの発生源
dyno:sourceより細かなログの発生源

つまり、
このログの出力時刻は2019-10-23T12:26:25.860762+00:00 で
このログの発生源はherokuのrouterである。
そしてそれ以降がメッセージ。そのメッセージの中身を見ていきます。

つまり、このエラーはherokuのrouterあたりが原因となっている。

メッセージ前半

at:重要度(必ずinfoになる)
code:エラーコード
(詳細はここhttps://devcenter.heroku.com/articles/error-codes#h10-app-crashed)
desc:エラーに対する説明

つまり、このエラーメッセージは、
アプリがクラッシュしたエラー(H10)を示しており、
(descでも記載されている)

メッセージ後半(HTTP関連)

method: HTTPリクエストのメソッドを表す
path: HTTPリクエストの リクエストターゲットの パス部分以降を表す
host:HTTPリクエストのリクエストターゲットのホスト部分を表す
request_id:HTTPリクエストのHerokuにおける識別子を示す
fwd:HTTPリクエストを送信したクライアントのIPアドレスを表す
dyno:HTTPリクエストを処理した仮想マシンの名称を示す
service:クライアントとHTTPリクエストを処理する仮想マシンとの間のデータのやりとりにかかった時間をミリ秒単位で表す
status:HTTPレスポンスのステータスコードを示す
bytes:HTTPレスポンスの長さをバイト単位で表す。

つまり、
urog.herokuapp.com/favicon.ico
に対してHTMLのGETメソッドを送ったときにエラーがでているのがわかる。

エラーの理由はサービスが停止していることだとわかる(503)。

結果、よくわからないが
heroku run rake db:migrate
したら動くようになり解決

ーーーーー
後日談
Railsの標準DBはSQLite

Herokuの標準DBはPostgreSQL

Herokuで動かすためには本番環境のDBをSQLiteからPostgreSQLに変えないといけない。
そのために3つの手順が必要↓こちらを参考に
https://qiita.com/hmmrjn/items/e2dff8036fbbd74f049a

16
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
9