X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d493d06b4b93b87c10c59954e47a18d85db13150..25d42fc3206cd6073d4a9d8358469628643fe1da:/services/api/config/initializers/lograge.rb diff --git a/services/api/config/initializers/lograge.rb b/services/api/config/initializers/lograge.rb index 564f31ad8b..9b422462b1 100644 --- a/services/api/config/initializers/lograge.rb +++ b/services/api/config/initializers/lograge.rb @@ -13,11 +13,48 @@ Server::Application.configure do client_ipaddr: event.payload[:client_ipaddr], client_auth: event.payload[:client_auth], } + + # Lograge adds exceptions not being rescued to event.payload, but we're + # catching all errors on ApplicationController so we look for backtraces + # elsewhere. + if !Thread.current[:backtrace].nil? + payload.merge!( + { + exception: Thread.current[:exception], + exception_backtrace: Thread.current[:backtrace], + } + ) + Thread.current[:exception] = nil + Thread.current[:backtrace] = nil + end + exceptions = %w(controller action format id) params = event.payload[:params].except(*exceptions) + + # Omit secret_mounts field if supplied in create/update request + # body. + [ + ['container', 'secret_mounts'], + ['container_request', 'secret_mounts'], + ].each do |resource, field| + if params[resource].is_a? Hash + params[resource] = params[resource].except(field) + end + end + + # Redact new_user_token param in /arvados/v1/users/merge + # request. Log the auth UUID instead, if the token exists. + if params['new_user_token'].is_a? String + params['new_user_token_uuid'] = + ApiClientAuthorization. + where('api_token = ?', params['new_user_token']). + first.andand.uuid + params['new_user_token'] = '[...]' + end + params_s = SafeJSON.dump(params) - if params_s.length > Rails.configuration.max_request_log_params_size - payload[:params_truncated] = params_s[0..Rails.configuration.max_request_log_params_size] + "[...]" + if params_s.length > Rails.configuration.SystemLogs["MaxRequestLogParamsSize"] + payload[:params_truncated] = params_s[0..Rails.configuration.SystemLogs["MaxRequestLogParamsSize"]] + "[...]" else payload[:params] = params end