デフォルトの Rack::CommonLogger を構成して、一部のリクエストのみを出力し、他のリクエストを表示しないようにすることはできません。ただし、デフォルトの CommonLogger を無効にして、代わりに独自のフィルタリング機能を使用できます。
require 'rubygems'
require 'rack'
require 'sinatra'
LOGGING_BLACKLIST = ['/health/api']
class FilteredCommonLogger < Rack::CommonLogger
def call(env)
if filter_log(env)
# default CommonLogger behaviour: log and move on
super
else
# pass request to next component without logging
@app.call(env)
end
end
# return true if request should be logged
def filter_log(env)
!LOGGING_BLACKLIST.include?(env['PATH_INFO'])
end
end
disable :logging
use FilteredCommonLogger
get '/members' do
# get members data
'This request gets logged'
end
get '/health/api' do
# Health Check
'I keep quiet'
end
もちろん、「ホワイトリストに登録された」リクエストのみをログに記録するカスタム ロガーを作成することもできます。