Rails logger 特定のパスへリクエストが来た場合にログを出力しない方法

Railsは便利。
本番サービスを稼働させている時、ヘルスチェックパスなど特定のパスへのリクエストのログはいらない、なんてことはよくある。
ALBを使うとヘルスチェックは必須だし、Zabbixなどでヘルスチェックを組み込む場合も同様である。

今回は、特定のパスに関するログを出力しないようにする方法の書き溜め。

私の場合、Railsのログをcloudwatch logsに出力している都合、
1秒に1回リクエストされるヘルスチェックパスのログは正直不要で、費用がかさむだけだから消したかった。

広告

Rails loggerでログを出力させない方法

やり方は色々あるだろうけど、今回の方法をざっくりいうと、Rails::Rack::Loggerを継承したクラスを作成する。
Rails.logger.silence で特定のパスならログ出さないよー、ってやっている。
パス情報はenv["REQUEST_PATH"]で取得できる。

config/initializers/my_custom_logger.rbというファイルを追加して下記のクラスを実装する。



Railsって便利すぎる。。
じゃあね〜〜。