module Imprint::LogHelpers
Public Instance Methods
log_entrypoint()
click to toggle source
Not relying on default rails logging, we more often use lograge. We still want to log incoming params safely, which lograge doesn't include this does the same sensative param filtering as rails defaults It also allows for logging headers and cookies
# File lib/imprint/log_helpers.rb, line 8 def log_entrypoint raise "you must call Imprint.configuration and configure the gem before using LogHelpers" if Imprint.configuration.nil? log_filter = ActionDispatch::Http::ParameterFilter.new(Imprint.configuration[:log_filters] || Rails.application.config.filter_parameters) # I should probably switch this to be a whitelist as well, or support both white and black lists for both cookies and headers header_blacklist = Imprint.configuration[:header_blacklist] || [] cookies_whitelist = Imprint.configuration[:cookies_whitelist] || [] param_level = Imprint.configuration[:param_level] || Imprint::QUERY_PARAMS http_request_headers = request.headers.select{|header_name, header_value| header_name.match("^HTTP.*") && !header_blacklist.include?(header_name) } data_append = "headers: " if http_request_headers.respond_to?(:each_pair) http_request_headers.each_pair{|k,v| data_append << " #{k}=\"#{v}\"" } else http_request_headers.each{|el| data_append << " #{el.first}=\"#{el.last}\"" } end data_append << " params: " if param_level==Imprint::FULL_PARAMS set_full_params(log_filter, data_append) elsif param_level==Imprint::FULL_GET_PARAMS if request.get? set_full_params(log_filter, data_append) else set_query_params(log_filter, data_append) end else set_query_params(log_filter, data_append) end if defined? cookies cookies_whitelist.each do |cookie_key| cookie_val = cookies[cookie_key] ? cookies[cookie_key] : 'nil' data_append << " #{cookie_key}=\"#{cookie_val}\"" end end logger.info "Started request_method=#{request.method.inspect} request_url=\"#{request.path}\" request_time=\"#{Time.now.to_default_s}\" request_ip=#{request.remote_ip.inspect} #{data_append}" rescue => e logger.error "error logging log_entrypoint for request: #{e.inspect}" logger.error e.backtrace.take(10).join("\n") end
set_full_params(log_filter, data_append)
click to toggle source
# File lib/imprint/log_helpers.rb, line 51 def set_full_params(log_filter, data_append) log_filter.filter(request.parameters).except('action', 'controller').each_pair{|k,v| data_append << " #{k}=\"#{v}\"" } end
set_query_params(log_filter, data_append)
click to toggle source
# File lib/imprint/log_helpers.rb, line 55 def set_query_params(log_filter, data_append) log_filter.filter(request.query_parameters).each_pair{|k,v| data_append << " #{k}=\"#{v}\"" } end