4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Heroku][Rails]ログ出力方法

Posted at

はじめに

Railsでログを追加する場合、主にloggerを使用するかと思いますが、そのままではHerokuでログが残りません。
利用は以下2点。
・Herokuは標準出力されたものをログとして保存している
・Railsのloggerはデフォルトではファイル出力

loggerで追加したログをHerokuでも残るように設定する方法を記載します。

対応方法

結論から記載すると、Heroku側にRAILS_LOG_TO_STDOUTという環境変数を設定することで対応します。

対応手順

1.メニューの「Dashboard」
2.設定したいアプリケーション選択
3.「Settings」タブ
4.「Reveal Config Vars」ボタンをクリック
5.「Config Vars」にそれぞれ以下を入力
 KEY:RAILS_LOG_TO_STDOUT
 VALUE:任意の値 ※"true"で確認済み
6.「Add」ボタンをクリック
7.アプリケーションを再起動

Railsの設定ファイルについて

RailsではどこでRAILS_LOG_TO_STDOUTを参照しているかを紹介しておきます。

config/environments/production.rb
Rails.application.configure do
  ()
  if ENV["RAILS_LOG_TO_STDOUT"].present?
    logger           = ActiveSupport::Logger.new(STDOUT)
    logger.formatter = config.log_formatter
    config.logger    = ActiveSupport::TaggedLogging.new(logger)
  end
  ()
end

注意点

この対応を行うと、ログの量が大幅に増えるためログが流れてしまわないように注意してください。
Herokuはログを保存しておく量が少ないため、アドオンを入れるなどの対策をしない場合、せっかく追加したログが流れてしまって取得できない、という事態になりかねません。

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?