環境
- Rails 5
やりたいこと
普通のログに吐くだけなら Rails.logger.info("メッセージ")
で可能だが、先頭に日付のフォーマットが入ってしまったりしてしまう
I, [2019-08-18T02:07:34.381971 #4116] INFO -- : Processing by VideosController#random as HTML I, [2019-08-18T02:07:35.320804 #4116] INFO -- : Rendering videos/random.html.slim within layouts/application I, [2019-08-18T02:07:35.321376 #4116] INFO -- : Rendered videos/random.html.slim within layouts/application (0.3ms) I, [2019-08-18T02:07:35.324456 #4116] INFO -- : Completed 200 OK in 942ms (Views: 4.4ms)
当然これはロガーとしては有り難いのだが、要件として、メッセージだけで日付やログレベルもなしで出力したかった
設定
ログフォーマッターをオリジナルで作るほうが正攻法なのかもしれないが、ちょっと大事すぎる気がしたので
config/application.rb で以下 ポイントは改行を自分で書く必要がある点だろうか
config.message_only_logger= Logger.new(Rails.root.join("log","hoge.log"), formatter: proc {|_severity, _datetime, _progname, msg| "#{msg}\n" })
Rails再起動が必要なので注意
で実際にログを出力したいときはいつもどおりでおk
Rails.application.config.message_only_logger.info('メッセージ1') Rails.application.config.message_only_logger.info('メッセージ2')
これで
メッセージ1 メッセージ2
と内容だけが出力される