ActionMailerのメール本文がログに出力されるのを抑制
メール本文がログに出力されるとログ容量を圧迫するので(あとウザいので)出力を抑制しました。
環境
$ ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin13] $ rails -v Rails 4.2.5
事象
メーラーでメールを送信すると、デフォルトでメール本文がログに記録されます。
... Rendered notifier/order_received.jp.html.erb within layouts/mailer (3.9ms) Rendered notifier/order_received.jp.text.erb within layouts/mailer (31.2ms) Notifier#order_received: processed outbound mail in 69.6ms Sent mail to hoehoe@hoe.com (148.1ms) Date: Thu, 28 Jan 2016 04:25:52 +0000 From: noreply@skimatalk.com To: hoehoe@hoe.com Message-ID: <56a99850628a8_e3fe3d690d13056190@812fa40a-c82a-4968-83bf-a9b4df09e732.mail> Subject: hoehoe Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="--==_mimepart_56a998505d1bb_e3fe3d690d130560ea"; charset=UTF-8 Content-Transfer-Encoding: 7bit ----==_mimepart_56a998505d1bb_e3fe3d690d130560ea Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ...
例では XXXX...
で表現してますが、base64 エンコードされたメール本文がこのように長々と出力されます。こんなのログに残っても対して役に立たない上にうっとうしいです。
解決策1
メーラーのロガーを nil
に設定するだけでもOK。
environments/production.rb
config.action_mailer.logger = nil
ただしこれだと、メーラーのログが一切出なくなり、それもちょっとどうかなあという感じ。(メールのテンプレートレンダリングのログは残ります。先ほどの例でいうと Rendered notifier/order_received.jp.html.erb within layouts/mailer (3.9ms)
などの行。ERB のレンダリングはメーラーの仕事じゃないからででしょうか。)
解決策2
メーラーのロガーを設定して、ロガーのログレベルを INFO レベルにしてやります。
environments/production.rb
config.action_mailer.logger = Logger.new(config.paths["log"].first) config.action_mailer.logger.level = Logger::INFO
ログはこんな感じになりました。
... Rendered admin_mailer/test.jp.text.erb (0.9ms) Rendered admin_mailer/test.jp.html.erb (1.7ms) I, [2016-01-28T07:14:51.945455 #17] INFO -- : Completed 302 Found in 670ms (ActiveRecord: 0.0ms) Sent mail to hoehoe@hoe.com (367.3ms) ← ...
Sent mail to hoehoe@hoe.com (367.3ms)
というメーラーのログは残しつつ、うっとうしいメール本文は消すことが出来ました。