12167: Improve request-id tracking in Workbench.
[arvados.git] / apps / workbench / config / initializers / lograge.rb
index 321bd037f98d58fd0fe9c860fc0c3f40ab771bc8..6e7f165c135b2132bcaef1e89ccac6890f585ed4 100644 (file)
@@ -6,15 +6,20 @@ ArvadosWorkbench::Application.configure do
   config.lograge.enabled = true
   config.lograge.formatter = Lograge::Formatters::Logstash.new
   config.lograge.custom_options = lambda do |event|
+    payload = {
+      request_id: event.payload[:request_id],
+    }
+    # Also log params (minus the pseudo-params added by Rails). But if
+    # params is huge, don't log the whole thing, just hope we get the
+    # most useful bits in truncate(json(params)).
     exceptions = %w(controller action format id)
-    params = {current_request_id: Thread.current[:current_request_id]}.
-             merge(event.payload[:params].except(*exceptions))
+    params = event.payload[:params].except(*exceptions)
     params_s = Oj.dump(params)
-    Thread.current[:current_request_id] = nil # Clear for next request
     if params_s.length > 1000
-      { params_truncated: params_s[0..1000] + "[...]" }
+      payload[:params_truncated] = params_s[0..1000] + "[...]"
     else
-      { params: params }
+      payload[:params] = params
     end
+    payload
   end
 end