minato_logger 0.5.0 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 33395b0697e82cb51f13e678fd28bb6544ad52eab50f347b5d3067f27fb8af75
4
- data.tar.gz: bb623b01437a87f6fff02dd2b806efbf13fcd06c8e419593ce2168cf2afd8919
3
+ metadata.gz: ae12d37ff687c3a12794e66161bc0989f52fc13dd47d7129f7ff45d50bf1283a
4
+ data.tar.gz: aa99d5be84564803b4cf84b91c40afec7b2eaa1e587f901452d939e015853d4d
5
5
  SHA512:
6
- metadata.gz: 5bafc0f8acc6c35a31f87a3c745202bdf731c395b6f3906a37202e27af66f4de20bd022d8e703e09b49a01e85c0a4542f593880d47a281e650f548546e5c7c7e
7
- data.tar.gz: 3c569ff3dcfec30885b7ef807ebd9b1c76a4b9b3c34a322b2ed037d424d3c2a33e1e10a45f6ad4f7866c940c01cfa85aa5cb67ac70c254d1bb4e7ab48b4bcb35
6
+ metadata.gz: 6a7705a362eaab5eb09c9b458ecab47f79f46d07ea6f6c77e5e4cd0253f3649678e78b9f93e58bc22530462418ad496c249dc18e4002c88c07b1b8a257949e61
7
+ data.tar.gz: 324f3264fd3b156f08e04e993e58f6c080036ad620e5630d978cafc7ec63c28bad580ce1eeda4179b75197d5aa6d1566fb92e26f59d9442001c5a5cf6a083db4
data/.rubocop.yml CHANGED
@@ -21,4 +21,4 @@ Layout/LineLength:
21
21
  Max: 125
22
22
 
23
23
  Metrics/ClassLength:
24
- Max: 150
24
+ Max: 165
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.5.2]
4
+
5
+ - Filter sensitive keys (per `config.filter_parameters`) inside logged request and response bodies, not just `params`
6
+
3
7
  ## [0.1.0] - 2023-11-10
4
8
 
5
9
  - Initial release
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rails'
4
+ require_relative 'middlewares/sensitive_body_filter'
4
5
  require_relative 'middlewares/request_response_logger'
5
6
  require_relative 'middlewares/request_context_enricher'
6
7
  require_relative 'configuration'
@@ -70,9 +70,15 @@ module MinatoLogger
70
70
 
71
71
  def dispatch_request_event(request)
72
72
  instrumenter = ActiveSupport::Notifications.instrumenter
73
- handle = instrumenter.build_handle('request.action_dispatch', { request: request })
74
- handle.start
75
- handle
73
+ payload = { request: request }
74
+ if instrumenter.respond_to?(:build_handle)
75
+ handle = instrumenter.build_handle('request.action_dispatch', payload)
76
+ handle.start
77
+ handle
78
+ else
79
+ instrumenter.start('request.action_dispatch', payload)
80
+ nil
81
+ end
76
82
  end
77
83
 
78
84
  def log_request(request, env, ctx)
@@ -128,11 +134,15 @@ module MinatoLogger
128
134
  def safe_parse_json(body)
129
135
  return nil if body.blank?
130
136
 
131
- JSON.parse(body)
137
+ sensitive_body_filter.call(JSON.parse(body))
132
138
  rescue JSON::ParserError
133
139
  body.to_s
134
140
  end
135
141
 
142
+ def sensitive_body_filter
143
+ @sensitive_body_filter ||= SensitiveBodyFilter.new
144
+ end
145
+
136
146
  def extract_request_body(request)
137
147
  return nil unless request.body
138
148
  return '[Multipart Form Data / File Upload]' if request.content_type.to_s.include?('multipart/form-data')
@@ -188,6 +198,8 @@ module MinatoLogger
188
198
  super
189
199
  elsif handle
190
200
  handle.finish
201
+ else
202
+ ActiveSupport::Notifications.instrumenter.finish('request.action_dispatch', {})
191
203
  end
192
204
  end
193
205
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MinatoLogger
4
+ module Middlewares
5
+ class SensitiveBodyFilter
6
+ def initialize(filters = Rails.application.config.filter_parameters)
7
+ @parameter_filter = ActiveSupport::ParameterFilter.new(filters)
8
+ end
9
+
10
+ def call(value)
11
+ case value
12
+ when Hash
13
+ @parameter_filter.filter(value)
14
+ when Array
15
+ value.map { |item| call(item) }
16
+ else
17
+ value
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MinatoLogger
4
- VERSION = '0.5.0'
4
+ VERSION = '0.5.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minato_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ferreri
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-04-17 00:00:00.000000000 Z
11
+ date: 2026-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -66,6 +66,7 @@ files:
66
66
  - lib/minato_logger/middleware.rb
67
67
  - lib/minato_logger/middlewares/request_context_enricher.rb
68
68
  - lib/minato_logger/middlewares/request_response_logger.rb
69
+ - lib/minato_logger/middlewares/sensitive_body_filter.rb
69
70
  - lib/minato_logger/version.rb
70
71
  - minato_logger.gemspec
71
72
  - sig/minato_logger.rbs