18348: Add ClusterID field to service log entries.
[arvados.git] / services / api / config / initializers / lograge.rb
index 07dba3aef4ff9bb64db8c1236a73c0c97c15a794..9c0f76691535eade936fa1712c06ea1657031c47 100644 (file)
@@ -9,10 +9,26 @@ Server::Application.configure do
   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],
       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)