はじめに
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を参照しているかを紹介しておきます。
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はログを保存しておく量が少ないため、アドオンを入れるなどの対策をしない場合、せっかく追加したログが流れてしまって取得できない、という事態になりかねません。