minato_logger 0.2.11 → 0.2.12

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: 25ff3fcf2b7ed82f3c39ee694c52d9ad81cf4086984441b082a0d46bb286ee5a
4
- data.tar.gz: 855bb34c1b70f7ec4fcf2bc737ed72a46eb895383ff0d7c421467e16297c449c
3
+ metadata.gz: 51344b63f46e1a72e359a1d2bce730996c7d8473cc96bd376a602fb26444c20b
4
+ data.tar.gz: c9c2b41076a8b6daa7e6d593492305f8bdb00d0873dda5a9fd96588b656b2f6f
5
5
  SHA512:
6
- metadata.gz: f7133120d86d171ab7cfef89a1aceb3f49766b4f138ac3d78786d734e2e4d91dbea77582105a5db24ffe33565e40619d7b15030ae80dc828f57a29df13cf0065
7
- data.tar.gz: 790fe184c0a52b9fd8e6c6ea6ae84bb63a68eaab082f8fab64e170b037177365c23199689fb38782239a4df93930ef4682d3e35c7fb136d064658cf695f29890
6
+ metadata.gz: b89b9daf1d56ffaa33c5447bfc7bc6b7a0861d0a14c37e950535d31f22f9f8345455974014eb8df55c8155f29ea502cf9de369252c86197519bc26887e845914
7
+ data.tar.gz: 37a12b74516a0b800ba9a3cfccb493e4a8a3f8072937f5a746b87c568ee7073973e69d10ad645b1592819a6f4721ff54d9d822472a8f1453fd058447f89cb639
data/.rubocop.yml CHANGED
@@ -19,3 +19,6 @@ Style/Documentation:
19
19
 
20
20
  Layout/LineLength:
21
21
  Max: 120
22
+
23
+ Metrics/ClassLength:
24
+ Max: 120
@@ -3,6 +3,7 @@
3
3
  require 'rails'
4
4
  require_relative 'middlewares/request_response_logger'
5
5
  require_relative 'configuration'
6
+ require 'rails/rack/logger'
6
7
 
7
8
  module MinatoLogger
8
9
  class Engine < ::Rails::Engine
@@ -15,7 +16,10 @@ module MinatoLogger
15
16
  if defined? Minato::Trace::Middleware::IntegrateWithCloudLogging
16
17
  app.config.minato_logger.middleware.use Minato::Trace::Middleware::IntegrateWithCloudLogging
17
18
  end
18
- app.config.middleware.insert_after ActionDispatch::RequestId, MinatoLogger::Middlewares::RequestResponseLogger
19
+ Rails.application.config.middleware.swap(
20
+ Rails::Rack::Logger,
21
+ MinatoLogger::Middlewares::RequestResponseLogger
22
+ )
19
23
  end
20
24
  end
21
25
  end
@@ -1,43 +1,49 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'json'
4
+ require 'rails/rack/logger'
4
5
 
5
6
  module MinatoLogger
6
7
  module Middlewares
7
- class RequestResponseLogger
8
+ class RequestResponseLogger < Rails::Rack::Logger
8
9
  SENSITIVE_HEADERS = %w[
9
10
  AUTHORIZATION PROXY_AUTHORIZATION X_CSRF_TOKEN
10
11
  HTTP_AUTHORIZATION HTTP_PROXY_AUTHORIZATION
11
12
  HTTP_X_CSRF_TOKEN COOKIE HTTP_COOKIE
12
13
  ].freeze
13
14
 
14
- def initialize(app)
15
- @app = app
16
- end
17
-
18
- def call(env)
19
- request = ActionDispatch::Request.new(env)
15
+ private
20
16
 
17
+ def call_app(request, env)
21
18
  log_request(request, env)
22
-
23
- execute_with_logging(request, env)
19
+ handle = dispatch_request_event(request)
20
+ configure_tags(request)
21
+ data = process_request(env)
22
+ [data[:status], data[:headers], [data[:body]]]
23
+ ensure
24
+ duration = ((current_time - data[:start_time]) * 1000).round(2)
25
+ log_response(request, env, data.merge({ duration: duration }))
26
+ finish_request_instrumentation(handle, env['rails.rack_logger_tag_count'])
24
27
  end
25
28
 
26
- private
27
-
28
- def execute_with_logging(request, env)
29
- current_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)
29
+ def process_request(env)
30
30
  data = { body: '', status: 500, start_time: current_time, headers: {} }
31
31
 
32
- begin
33
- data[:status], data[:headers], response = @app.call(env)
34
- data[:body] = extract_body_safely(response || [])
32
+ data[:status], data[:headers], response = @app.call(env)
33
+ data[:body] = extract_body_safely(response || [])
34
+ data
35
+ end
35
36
 
36
- [data[:status], data[:headers], [data[:body]]]
37
- ensure
38
- duration = ((current_time - data[:start_time]) * 1000).round(2)
39
- log_response(request, env, data.merge({ duration: duration }))
40
- end
37
+ def configure_tags(request)
38
+ @taggers = Rails.application.config.log_tags if @taggers.empty?
39
+ logger.push_tags(*compute_tags(request))
40
+ end
41
+
42
+ def dispatch_request_event(request)
43
+ instrumenter = ActiveSupport::Notifications.instrumenter
44
+ handle = instrumenter.build_handle('request.action_dispatch', { request: request })
45
+ handle.start
46
+ handle
41
47
  end
42
48
 
43
49
  def log_request(request, env)
@@ -122,6 +128,10 @@ module MinatoLogger
122
128
  filter_sensitive_headers(headers)
123
129
  end
124
130
 
131
+ def current_time
132
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
133
+ end
134
+
125
135
  def filter_sensitive_headers(headers)
126
136
  return {} unless headers.is_a?(Hash)
127
137
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MinatoLogger
4
- VERSION = '0.2.11'
4
+ VERSION = '0.2.12'
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.2.11
4
+ version: 0.2.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ferreri
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-02-10 00:00:00.000000000 Z
11
+ date: 2026-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport