pier_logging 0.1.11 → 0.2.0

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: 5790108eb8d4e852835319b5ab0aa479b0484a4a7c8557b6c3ed71ceaaae704d
4
- data.tar.gz: 7c8e4d8772b28bb31ee8cd554635bf5b58394a37f8d8a2bff2f97be79e1d8a04
3
+ metadata.gz: c102d9c566bc2227233c2fb698f87f99a13061194f25d0d4728bc356ed2c1593
4
+ data.tar.gz: 76d4d43102a6e10693dffb9f7b6671ecff73a2b22f47add8d2dbe9635b3c2044
5
5
  SHA512:
6
- metadata.gz: 8c6c86e0fb40803784e7225db81e331d4b7b3de3372cf0311632b098c017c8e434358365de96b9f5d55da061714d314f8ac5c1926a8cab6b3892f9f6cdb1a1c0
7
- data.tar.gz: f95d6ae0abd0756e597cf8333e156a4f9ecf163737ccd418552f12d496fd8b1387c642c9a28a129ada40dbeacdb3db3bc13d022e285a0cb9baddca118292653e
6
+ metadata.gz: f98a44d5ca1c3b360301550e14a20327301e12c40b8fc07286432068b9943bed4820472ba8f2d2c78aa87eefb0c3440c89153c4a1bbd1b78e5705c22aee8cfb9
7
+ data.tar.gz: e072ab069990dd67224e1bfd7e3c32c446ef76849f222499adb94cd5c67ea50260ac25f7d36da8d5cda8cd43463482cb9e4327bb547a8a0d493665d100257d8a
@@ -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
@@ -2,7 +2,12 @@
2
2
  module PierLogging
3
3
  class Logger < Ougai::Logger
4
4
  include ActiveSupport::LoggerThreadSafeLevel
5
- include ActiveSupport::LoggerSilence
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: env['action_dispatch.request_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: parse_body(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
- env.select { |k,v| k.start_with? 'HTTP_'}.
75
- transform_keys { |k| k.delete_prefix('HTTP_').split('_').join('-').upcase }
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 = REDACT_REPLACE_KEYS.any?{ |regex| k =~regex }
119
+ should_redact = replace_keys.any?{ |regex| k =~regex }
105
120
  if (should_redact)
106
- [k, REDACT_REPLACE_BY]
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
@@ -1,3 +1,3 @@
1
1
  module PierLogging
2
- VERSION = "0.1.11"
2
+ VERSION = "0.2.0"
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.11
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-08 00:00:00.000000000 Z
11
+ date: 2020-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ougai