summaryrefslogtreecommitdiff
path: root/lib/gitlab
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab')
-rw-r--r--lib/gitlab/git/rugged_impl/repository.rb2
-rw-r--r--lib/gitlab/grape_logging/formatters/lograge_with_timestamp.rb21
-rw-r--r--lib/gitlab/lograge/custom_options.rb43
3 files changed, 54 insertions, 12 deletions
diff --git a/lib/gitlab/git/rugged_impl/repository.rb b/lib/gitlab/git/rugged_impl/repository.rb
index 8fde93e71e2..8679d977773 100644
--- a/lib/gitlab/git/rugged_impl/repository.rb
+++ b/lib/gitlab/git/rugged_impl/repository.rb
@@ -70,7 +70,7 @@ module Gitlab
# Lookup for rugged object by oid or ref name
def lookup(oid_or_ref_name)
- rugged.rev_parse(oid_or_ref_name)
+ rev_parse_target(oid_or_ref_name)
end
end
end
diff --git a/lib/gitlab/grape_logging/formatters/lograge_with_timestamp.rb b/lib/gitlab/grape_logging/formatters/lograge_with_timestamp.rb
index 1eb1e1b783b..045a341f2ed 100644
--- a/lib/gitlab/grape_logging/formatters/lograge_with_timestamp.rb
+++ b/lib/gitlab/grape_logging/formatters/lograge_with_timestamp.rb
@@ -6,6 +6,8 @@ module Gitlab
class LogrageWithTimestamp
include Gitlab::EncodingHelper
+ EMPTY_ARRAY = [].freeze
+
def call(severity, datetime, _, data)
time = data.delete :time
data[:params] = process_params(data)
@@ -16,30 +18,27 @@ module Gitlab
duration: time[:total],
db: time[:db],
view: time[:view]
- }.merge(data)
- ::Lograge.formatter.call(attributes) + "\n"
+ }.merge!(data)
+
+ ::Lograge.formatter.call(attributes) << "\n"
end
private
def process_params(data)
- return [] unless data.has_key?(:params)
+ return EMPTY_ARRAY unless data.has_key?(:params)
- params_array =
- data[:params]
- .each_pair
- .map { |k, v| { key: k, value: utf8_encode_values(v) } }
+ params_array = data[:params].map { |k, v| { key: k, value: utf8_encode_values(v) } }
- Gitlab::Utils::LogLimitedArray.log_limited_array(params_array,
- sentinel: { key: 'truncated', value: '...' })
+ Gitlab::Utils::LogLimitedArray.log_limited_array(params_array, sentinel: Gitlab::Lograge::CustomOptions::LIMITED_ARRAY_SENTINEL)
end
def utf8_encode_values(data)
case data
when Hash
- data.merge(data) { |k, v| utf8_encode_values(v) }
+ data.merge!(data) { |k, v| utf8_encode_values(v) }
when Array
- data.map { |v| utf8_encode_values(v) }
+ data.map! { |v| utf8_encode_values(v) }
when String
encode_utf8(data)
end
diff --git a/lib/gitlab/lograge/custom_options.rb b/lib/gitlab/lograge/custom_options.rb
new file mode 100644
index 00000000000..5dbff7d9102
--- /dev/null
+++ b/lib/gitlab/lograge/custom_options.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Lograge
+ module CustomOptions
+ LIMITED_ARRAY_SENTINEL = { key: 'truncated', value: '...' }.freeze
+ IGNORE_PARAMS = Set.new(%w(controller action format)).freeze
+
+ def self.call(event)
+ params = event
+ .payload[:params]
+ .each_with_object([]) { |(k, v), array| array << { key: k, value: v } unless IGNORE_PARAMS.include?(k) }
+
+ payload = {
+ time: Time.now.utc.iso8601(3),
+ params: Gitlab::Utils::LogLimitedArray.log_limited_array(params, sentinel: LIMITED_ARRAY_SENTINEL),
+ remote_ip: event.payload[:remote_ip],
+ user_id: event.payload[:user_id],
+ username: event.payload[:username],
+ ua: event.payload[:ua],
+ queue_duration: event.payload[:queue_duration]
+ }
+
+ ::Gitlab::InstrumentationHelper.add_instrumentation_data(payload)
+
+ payload[:response] = event.payload[:response] if event.payload[:response]
+ payload[:etag_route] = event.payload[:etag_route] if event.payload[:etag_route]
+ payload[Labkit::Correlation::CorrelationId::LOG_KEY] = Labkit::Correlation::CorrelationId.current_id
+
+ if cpu_s = Gitlab::Metrics::System.thread_cpu_duration(::Gitlab::RequestContext.instance.start_thread_cpu_time)
+ payload[:cpu_s] = cpu_s
+ end
+
+ # https://github.com/roidrage/lograge#logging-errors--exceptions
+ exception = event.payload[:exception_object]
+
+ ::Gitlab::ExceptionLogFormatter.format!(exception, payload)
+
+ payload
+ end
+ end
+ end
+end