pier_logging 0.1.14 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5cf700dcf41369d8bf53db3a083f23777b62a30da2250a3297560c2d6aaef187
4
- data.tar.gz: 25ee1fabd0de22e25b08b3ef356a731b1dd828490699b9dadbb1ddf281fd061e
3
+ metadata.gz: a7e62fec86c0128b538d981f3920a29ef7facca185c9f0a2e57b05025b01fdc9
4
+ data.tar.gz: 9e9823722a20e9b6279e086513a30ca948fa87bba2ed776e5b2df39023133c38
5
5
  SHA512:
6
- metadata.gz: 9ce0e74e9ef845b85b226dbc44b462a4d1557d8b74faa5ffb937d983fad866430d21f3d6fd53a294638a2f2eae8cdd56226fde35039e5fbe3605143efe23bdea
7
- data.tar.gz: 8ad7ccc220039ae2d1ffc9baca617d5984af96431729ec635d3e9294a04886bf4afbb7a2d14c45fb43b3f23b9fe796fe128c80b1dc164e1052a2ce1b476cf27a
6
+ metadata.gz: 878039658c28b40809de6cff417fafa7c25b63852b9f1a41f1e5513c4266f5fe430f65d452315b5973c2764678092492ad81de6738bb8667df6544504747a47d
7
+ data.tar.gz: 7488c60cf4dbec7507853be535cb7639c16035d6b87102a577cd88b81450f738da9a672c1b10552cc709b1d71bfa2b38b6f04cc31b65ba6290209280e689c9f2
@@ -54,13 +54,16 @@ module PierLogging
54
54
  end
55
55
 
56
56
  class RequestLoggerConfiguration
57
- attr_reader :enabled, :user_info_getter, :hide_response_body_for_paths, :log_response
57
+ attr_reader :enabled, :user_info_getter, :hide_response_body_for_paths,
58
+ :log_response, :hide_request_headers, :correlation_id_getter
58
59
 
59
60
  def initialize
60
- @user_info_getter = nil
61
+ @user_info_getter = ->(_ = nil) { nil }
61
62
  @enabled = false
62
63
  @hide_response_body_for_paths = nil
63
64
  @log_response = true
65
+ @hide_request_headers = nil
66
+ @correlation_id_getter = ->(_ = nil, _ = nil) { nil }
64
67
  end
65
68
 
66
69
  def user_info_getter=(proc)
@@ -80,10 +83,22 @@ module PierLogging
80
83
 
81
84
  @hide_response_body_for_paths = hide_response_body_for_paths
82
85
  end
86
+
87
+ def hide_request_headers=(hide_request_headers)
88
+ unless (hide_request_headers.is_a? Array) && (hide_request_headers.all?{|item| item.is_a? Regexp})
89
+ raise ArgumentError, "Config 'hide_request_headers' must be an 'Array of Regexps'"
90
+ end
91
+ @hide_request_headers = hide_request_headers
92
+ end
83
93
 
84
94
  def enabled=(enabled = false)
85
95
  raise ArgumentError, "Config 'enabled' must be a 'boolean'" unless !!enabled == enabled
86
96
  @enabled = enabled
87
97
  end
98
+
99
+ def correlation_id_getter=(proc)
100
+ raise ArgumentError, "Config 'correlation_id_getter' must be a 'Proc'" unless proc.is_a? Proc
101
+ @correlation_id_getter = proc
102
+ end
88
103
  end
89
104
  end
@@ -50,7 +50,8 @@ module PierLogging
50
50
  duration: ((ends_at - starts_at)*1000).to_i,
51
51
  context: {
52
52
  user: get_user_info_from_headers(request_headers),
53
- correlation_id: env['action_dispatch.request_id'],
53
+ request_id: env['action_dispatch.request_id'],
54
+ correlation_id: get_correlation_id(env, request_headers)
54
55
  },
55
56
  request: {
56
57
  headers: request_headers,
@@ -71,8 +72,14 @@ module PierLogging
71
72
 
72
73
  private
73
74
  def get_request_headers_from_env(env)
74
- env.select { |k,v| k[0..4] == 'HTTP_'}.
75
+ hide_request_headers = PierLogging.request_logger_configuration.hide_request_headers
76
+
77
+ headers = env.select { |k,v| k[0..4] == 'HTTP_'}.
75
78
  transform_keys { |k| k[5..-1].split('_').join('-').upcase }
79
+
80
+ return redact_hash(headers, hide_request_headers, nil) if hide_request_headers.present?
81
+
82
+ headers
76
83
  end
77
84
 
78
85
  def response_body(request_path, body)
@@ -95,6 +102,10 @@ module PierLogging
95
102
  PierLogging.request_logger_configuration.user_info_getter.call(headers)
96
103
  end
97
104
 
105
+ def get_correlation_id(env, headers)
106
+ PierLogging.request_logger_configuration.correlation_id_getter.call(env, headers) || headers['X-CORRELATION-ID']
107
+ end
108
+
98
109
  def parse_body(body)
99
110
  body_object = get_body_object(body)
100
111
  Oj.load(body_object, allow_blank: true)
@@ -108,11 +119,11 @@ module PierLogging
108
119
  body
109
120
  end
110
121
 
111
- def redact_hash(hash)
122
+ def redact_hash(hash, replace_keys = REDACT_REPLACE_KEYS, replace_by = REDACT_REPLACE_BY)
112
123
  hash.traverse do |k,v|
113
- should_redact = REDACT_REPLACE_KEYS.any?{ |regex| k =~regex }
124
+ should_redact = replace_keys.any?{ |regex| k =~regex }
114
125
  if (should_redact)
115
- [k, REDACT_REPLACE_BY]
126
+ [k, replace_by]
116
127
  else
117
128
  [k, v]
118
129
  end
@@ -134,4 +145,4 @@ module PierLogging
134
145
  500
135
146
  end
136
147
  end
137
- end
148
+ end
@@ -1,3 +1,3 @@
1
1
  module PierLogging
2
- VERSION = "0.1.14"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pier_logging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mauricio Banduk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-13 00:00:00.000000000 Z
11
+ date: 2020-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ougai