pier_logging 0.1.11 → 0.2.0
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 +24 -1
- data/lib/pier_logging/logger.rb +6 -1
- data/lib/pier_logging/request_logger.rb +23 -8
- 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: c102d9c566bc2227233c2fb698f87f99a13061194f25d0d4728bc356ed2c1593
|
4
|
+
data.tar.gz: 76d4d43102a6e10693dffb9f7b6671ecff73a2b22f47add8d2dbe9635b3c2044
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f98a44d5ca1c3b360301550e14a20327301e12c40b8fc07286432068b9943bed4820472ba8f2d2c78aa87eefb0c3440c89153c4a1bbd1b78e5705c22aee8cfb9
|
7
|
+
data.tar.gz: e072ab069990dd67224e1bfd7e3c32c446ef76849f222499adb94cd5c67ea50260ac25f7d36da8d5cda8cd43463482cb9e4327bb547a8a0d493665d100257d8a
|
data/lib/pier_logging.rb
CHANGED
@@ -54,17 +54,40 @@ 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, :log_response, :hide_request_headers
|
58
58
|
|
59
59
|
def initialize
|
60
60
|
@user_info_getter = nil
|
61
61
|
@enabled = false
|
62
|
+
@hide_response_body_for_paths = nil
|
63
|
+
@log_response = true
|
64
|
+
@hide_request_headers = nil
|
62
65
|
end
|
63
66
|
|
64
67
|
def user_info_getter=(proc)
|
65
68
|
raise ArgumentError, "Config 'user_info_getter' must be a 'Proc'" unless proc.is_a? Proc
|
66
69
|
@user_info_getter = proc
|
67
70
|
end
|
71
|
+
|
72
|
+
def log_response=(log_response)
|
73
|
+
raise ArgumentError, "Config 'log_response' must be a 'boolean'" unless !!log_response == log_response
|
74
|
+
@log_response = log_response
|
75
|
+
end
|
76
|
+
|
77
|
+
def hide_response_body_for_paths=(hide_response_body_for_paths)
|
78
|
+
unless (hide_response_body_for_paths.is_a? Array) && (hide_response_body_for_paths.all?{|item| item.is_a? Regexp})
|
79
|
+
raise ArgumentError, "Config 'hide_response_body_for_paths' must be an 'Array of Regexps'"
|
80
|
+
end
|
81
|
+
|
82
|
+
@hide_response_body_for_paths = hide_response_body_for_paths
|
83
|
+
end
|
84
|
+
|
85
|
+
def hide_request_headers=(hide_request_headers)
|
86
|
+
unless (hide_request_headers.is_a? Array) && (hide_request_headers.all?{|item| item.is_a? Regexp})
|
87
|
+
raise ArgumentError, "Config 'hide_request_headers' must be an 'Array of Regexps'"
|
88
|
+
end
|
89
|
+
@hide_request_headers = hide_request_headers
|
90
|
+
end
|
68
91
|
|
69
92
|
def enabled=(enabled = false)
|
70
93
|
raise ArgumentError, "Config 'enabled' must be a 'boolean'" unless !!enabled == enabled
|
data/lib/pier_logging/logger.rb
CHANGED
@@ -2,7 +2,12 @@
|
|
2
2
|
module PierLogging
|
3
3
|
class Logger < Ougai::Logger
|
4
4
|
include ActiveSupport::LoggerThreadSafeLevel
|
5
|
-
include
|
5
|
+
include LoggerSilence
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super
|
9
|
+
after_initialize if respond_to? :after_initialize
|
10
|
+
end
|
6
11
|
|
7
12
|
def create_formatter
|
8
13
|
PierLogging.logger_configuration.formatter
|
@@ -50,7 +50,7 @@ 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:
|
53
|
+
correlation_id: request_headers['X-CORRELATION-ID'],
|
54
54
|
},
|
55
55
|
request: {
|
56
56
|
headers: request_headers,
|
@@ -59,7 +59,7 @@ module PierLogging
|
|
59
59
|
},
|
60
60
|
response: {
|
61
61
|
status: status,
|
62
|
-
body:
|
62
|
+
body: response_body(request.path, body),
|
63
63
|
type: type['Content-Type'],
|
64
64
|
}
|
65
65
|
})
|
@@ -71,8 +71,23 @@ module PierLogging
|
|
71
71
|
|
72
72
|
private
|
73
73
|
def get_request_headers_from_env(env)
|
74
|
-
|
75
|
-
|
74
|
+
hide_request_headers = PierLogging.request_logger_configuration.hide_request_headers
|
75
|
+
|
76
|
+
headers = env.select { |k,v| k[0..4] == 'HTTP_'}.
|
77
|
+
transform_keys { |k| k[5..-1].split('_').join('-').upcase }
|
78
|
+
|
79
|
+
return redact_hash(headers, hide_request_headers, nil) if hide_request_headers.present?
|
80
|
+
|
81
|
+
headers
|
82
|
+
end
|
83
|
+
|
84
|
+
def response_body(request_path, body)
|
85
|
+
return nil unless PierLogging.request_logger_configuration.log_response
|
86
|
+
|
87
|
+
hide_response_body_for_paths = PierLogging.request_logger_configuration.hide_response_body_for_paths
|
88
|
+
return nil if hide_response_body_for_paths && hide_response_body_for_paths.any?{ |path|request_path =~ path }
|
89
|
+
|
90
|
+
parse_body(body)
|
76
91
|
end
|
77
92
|
|
78
93
|
def build_message_from_request(request)
|
@@ -99,11 +114,11 @@ module PierLogging
|
|
99
114
|
body
|
100
115
|
end
|
101
116
|
|
102
|
-
def redact_hash(hash)
|
117
|
+
def redact_hash(hash, replace_keys = REDACT_REPLACE_KEYS, replace_by = REDACT_REPLACE_BY)
|
103
118
|
hash.traverse do |k,v|
|
104
|
-
should_redact =
|
119
|
+
should_redact = replace_keys.any?{ |regex| k =~regex }
|
105
120
|
if (should_redact)
|
106
|
-
[k,
|
121
|
+
[k, replace_by]
|
107
122
|
else
|
108
123
|
[k, v]
|
109
124
|
end
|
@@ -125,4 +140,4 @@ module PierLogging
|
|
125
140
|
500
|
126
141
|
end
|
127
142
|
end
|
128
|
-
end
|
143
|
+
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.0
|
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-
|
11
|
+
date: 2020-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ougai
|