動かざることバグの如し

近づきたいよ 君の理想に

Railsで日付なしの内容だけのログを出力する方法

環境

やりたいこと

普通のログに吐くだけなら 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

と内容だけが出力される