HerokuでRails動かすときのカスタムLogFormatterでハマった話
結論から言うと、Rails 5を使うときはrails_12factor gemは使わないほうが良さそう。
アプリケーションログベースでの監視をしたい/アラートを上げたいので、loggerの上げるログのseverity(ログレベル)の情報はかなり重要。この辺の情報はloggerのformatterにActiveSupport::Logger::SimpleFormatterを使っちゃうと消されてしまうが、::Logger::Formatterを使えば指定すれば消されずに出力される。
config/environments/production.rb
config.log_formatter = ::Logger::Formatter.new
しかし、herokuにデプロイしているアプリで上記のFormatterが動いてくれずに非常に時間を消費してしまった。いくらformatterを変えても、強制的にActiveSupport::Logger::SimpleFormatterが使われてしまう。そういえば、rails_12factor gemってherokuでログを標準出力に吐き出す設定を良しなにやってくれるgemだったっけ?考えられるとしたらこれしか無いな...
If you are starting a new application with Rails 5, you do not need this gem.
Rails 5ではもうこのgem要らないらしい。マジか。
Gemfileからgem "rails_12factor"の行を消したらちゃんと動いた。