pier_logging 0.1.13 → 0.2.2
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 +32 -2
- data/lib/pier_logging/request_logger.rb +27 -7
- 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: 15b02b57cc80e8d5babe64aa73a7b29c2d1fac544acc2c069c7cb0ba4ee985fc
|
4
|
+
data.tar.gz: 13719e2b027929f1e385928a943a96200db798c008be2a4f7895c075ea34fefe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: edcd064cef708218bc0c4fb6e2e2d0ae13737b41a666c14be34129ff5ef008dedf734e33b93fa6e5c82cff95e1ca2bc76f0dcdfc39ed944509dc2742d4c56fb6
|
7
|
+
data.tar.gz: 170036ef60fecdf8cc77b8aa51f5ac4e40e89f29e90fd8410d9c6a65f98a43ecf4f73f0ab79d8db865cd4a38a6fab5bb4da420f00b8d0129e314943c4f2e31f2
|
data/lib/pier_logging.rb
CHANGED
@@ -54,21 +54,51 @@ module PierLogging
|
|
54
54
|
end
|
55
55
|
|
56
56
|
class RequestLoggerConfiguration
|
57
|
-
attr_reader :enabled, :user_info_getter
|
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
|
63
|
+
@hide_response_body_for_paths = nil
|
64
|
+
@log_response = true
|
65
|
+
@hide_request_headers = nil
|
66
|
+
@correlation_id_getter = ->(_ = nil, _ = nil) { nil }
|
62
67
|
end
|
63
68
|
|
64
69
|
def user_info_getter=(proc)
|
65
70
|
raise ArgumentError, "Config 'user_info_getter' must be a 'Proc'" unless proc.is_a? Proc
|
66
71
|
@user_info_getter = proc
|
67
72
|
end
|
73
|
+
|
74
|
+
def log_response=(log_response)
|
75
|
+
raise ArgumentError, "Config 'log_response' must be a 'boolean'" unless !!log_response == log_response
|
76
|
+
@log_response = log_response
|
77
|
+
end
|
78
|
+
|
79
|
+
def hide_response_body_for_paths=(hide_response_body_for_paths)
|
80
|
+
unless (hide_response_body_for_paths.is_a? Array) && (hide_response_body_for_paths.all?{|item| item.is_a? Regexp})
|
81
|
+
raise ArgumentError, "Config 'hide_response_body_for_paths' must be an 'Array of Regexps'"
|
82
|
+
end
|
83
|
+
|
84
|
+
@hide_response_body_for_paths = hide_response_body_for_paths
|
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
|
68
93
|
|
69
94
|
def enabled=(enabled = false)
|
70
95
|
raise ArgumentError, "Config 'enabled' must be a 'boolean'" unless !!enabled == enabled
|
71
96
|
@enabled = enabled
|
72
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
|
73
103
|
end
|
74
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,
|
@@ -59,7 +60,7 @@ module PierLogging
|
|
59
60
|
},
|
60
61
|
response: {
|
61
62
|
status: status,
|
62
|
-
body:
|
63
|
+
body: response_body(request.path, body),
|
63
64
|
type: type['Content-Type'],
|
64
65
|
}
|
65
66
|
})
|
@@ -71,8 +72,23 @@ 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
|
83
|
+
end
|
84
|
+
|
85
|
+
def response_body(request_path, body)
|
86
|
+
return nil unless PierLogging.request_logger_configuration.log_response
|
87
|
+
|
88
|
+
hide_response_body_for_paths = PierLogging.request_logger_configuration.hide_response_body_for_paths
|
89
|
+
return nil if hide_response_body_for_paths && hide_response_body_for_paths.any?{ |path|request_path =~ path }
|
90
|
+
|
91
|
+
parse_body(body)
|
76
92
|
end
|
77
93
|
|
78
94
|
def build_message_from_request(request)
|
@@ -86,6 +102,10 @@ module PierLogging
|
|
86
102
|
PierLogging.request_logger_configuration.user_info_getter.call(headers)
|
87
103
|
end
|
88
104
|
|
105
|
+
def get_correlation_id(env, headers)
|
106
|
+
PierLogging.request_logger_configuration.correlation_id_getter(env, headers) || headers['X-CORRELATION-ID']
|
107
|
+
end
|
108
|
+
|
89
109
|
def parse_body(body)
|
90
110
|
body_object = get_body_object(body)
|
91
111
|
Oj.load(body_object, allow_blank: true)
|
@@ -99,11 +119,11 @@ module PierLogging
|
|
99
119
|
body
|
100
120
|
end
|
101
121
|
|
102
|
-
def redact_hash(hash)
|
122
|
+
def redact_hash(hash, replace_keys = REDACT_REPLACE_KEYS, replace_by = REDACT_REPLACE_BY)
|
103
123
|
hash.traverse do |k,v|
|
104
|
-
should_redact =
|
124
|
+
should_redact = replace_keys.any?{ |regex| k =~regex }
|
105
125
|
if (should_redact)
|
106
|
-
[k,
|
126
|
+
[k, replace_by]
|
107
127
|
else
|
108
128
|
[k, v]
|
109
129
|
end
|
@@ -125,4 +145,4 @@ module PierLogging
|
|
125
145
|
500
|
126
146
|
end
|
127
147
|
end
|
128
|
-
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.2
|
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-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ougai
|