モンモンブログ

Ruby, Python, PHP, JavaScript/jQuery などなど気分に応じて

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) というメーラーのログは残しつつ、うっとうしいメール本文は消すことが出来ました。