18348: Add ClusterID field to service log entries.
[arvados.git] / apps / workbench / config / initializers / lograge.rb
index fa19667e3693848415f257223e13262fd99175c7..795be7bfc39907ee6590378484b8c04aa9329c3c 100644 (file)
@@ -1,16 +1,26 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 ArvadosWorkbench::Application.configure do
   config.lograge.enabled = true
   config.lograge.formatter = Lograge::Formatters::Logstash.new
   config.lograge.custom_options = lambda do |event|
+    payload = {
+      ClusterID: Rails.configuration.ClusterID,
+      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