rails_semantic_logger は Rails::Rack::Logger を swap してる ので、以下のような swap がうまく動かない。
特定のログを抑制する方法として、SemanticLogger には Filtering という機能がある。
こんな感じに書いておけばヘルスチェックのエンドポイントへリクエストされた時のログは出なくなる。
config.semantic_logger.add_appender(
io: STDOUT,
level: config.log_level,
formatter: :json,
filter: -> log { log.payload[:path] !~ /^\/healthcheck$/ }
)
追記
なんかpayloadにnilが入ってくる時があるっぽい。あと別に正規表現じゃなくてもいい。
config.semantic_logger.add_appender(
io: STDOUT,
level: config.log_level,
formatter: :json,
filter: -> log {
unless log.payload.nil?
log.payload[:path] != "/healthcheck"
end
}
)