【Rails】ActiveModelSerializersのログを出力しないようにする
はじめに
Webサービスを開発していて、気づいたことがあったのでメモ
環境
- macOS Sierra
- Docker(docker-compose)
- Ruby 2.6.3
- Ruby on Rails 5.2.2
- active_model_serializers 0.10.9
前提条件
active_model_serializers
を使って何かしらレスポンスが返されるようになっていること
調査
Datadogでログを確認していたところ以下のようなログが出力されていた。
[active_model_serializers] Rendered ActiveModel::Serializer::CollectionSerializer with ActiveModelSerializers::Adapter::Json (103.91ms)
原因
ドキュメントを確認すると ActiveModelSerializers
でデフォルト出力することがわかりました。
https://github.com/rails-api/active_model_serializers/blob/a032201a91cbca407211bca0392ba881eef1f7ba/lib/active_model_serializers.rb#L19
解決方法
config/environments/production.rb
に以下の通り記述すれば出力されなくなります。
Rails.application.configure do # Disable ActiveModelSerializers Logging ActiveSupport::Notifications.unsubscribe(ActiveModelSerializers::Logging::RENDER_EVENT) end
まとめ
これで本番環境で不要なログが表示されないようになりました。
参考
ruby on rails - Remove log message in active-model-serializers - Stack Overflow