pier_logging 0.1.14 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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