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 +4 -4
- data/lib/pier_logging.rb +17 -2
- data/lib/pier_logging/request_logger.rb +17 -6
- data/lib/pier_logging/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7e62fec86c0128b538d981f3920a29ef7facca185c9f0a2e57b05025b01fdc9
|
4
|
+
data.tar.gz: 9e9823722a20e9b6279e086513a30ca948fa87bba2ed776e5b2df39023133c38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 878039658c28b40809de6cff417fafa7c25b63852b9f1a41f1e5513c4266f5fe430f65d452315b5973c2764678092492ad81de6738bb8667df6544504747a47d
|
7
|
+
data.tar.gz: 7488c60cf4dbec7507853be535cb7639c16035d6b87102a577cd88b81450f738da9a672c1b10552cc709b1d71bfa2b38b6f04cc31b65ba6290209280e689c9f2
|
data/lib/pier_logging.rb
CHANGED
@@ -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,
|
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
|
-
|
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
|
-
|
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 =
|
124
|
+
should_redact = replace_keys.any?{ |regex| k =~regex }
|
114
125
|
if (should_redact)
|
115
|
-
[k,
|
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
|
data/lib/pier_logging/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2020-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ougai
|