minato_logger 0.2.11 → 0.2.13

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: 30d7463ea874ebb8c5c225639287ef19ad5298f0194a8a40f58780cde4b21079
4
+ data.tar.gz: 4626828e63f5fe5cca9d0ea669094d3e95331c3fe6f9d006a0971160276f9615
5
5
  SHA512:
6
- metadata.gz: f7133120d86d171ab7cfef89a1aceb3f49766b4f138ac3d78786d734e2e4d91dbea77582105a5db24ffe33565e40619d7b15030ae80dc828f57a29df13cf0065
7
- data.tar.gz: 790fe184c0a52b9fd8e6c6ea6ae84bb63a68eaab082f8fab64e170b037177365c23199689fb38782239a4df93930ef4682d3e35c7fb136d064658cf695f29890
6
+ metadata.gz: b4439e60fce5ed2f4db05ddeb07ed1244aab12fb91eacca38f480de434e52b9c9b4aea810872c5f0a1ca613b45451357735dc3b15687a470313af25a51318242
7
+ data.tar.gz: 1c4a700119bacd6cbbc877fbab3da93e2e0b8e86c50153acaeb616596dd84d38334fd5b72d11f6558deb345fe973e0fa043f4628c27b9e91cfb02f8fa8a86d2b
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,11 @@ 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
+ []
23
+ )
19
24
  end
20
25
  end
21
26
  end
@@ -1,43 +1,53 @@
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
+ data = process_request(env)
21
+ [data[:status], data[:headers], [data[:body]]]
22
+ ensure
23
+ duration = ((current_time - data[:start_time]) * 1000).round(2)
24
+ log_response(request, env, data.merge({ duration: duration }))
25
+ finish_request_instrumentation(handle, env['rails.rack_logger_tag_count'])
24
26
  end
25
27
 
26
- private
28
+ def compute_tags(request)
29
+ tags_to_use = @taggers.presence || Rails.application.config.log_tags || []
30
+ tags_to_use.collect do |tag|
31
+ next tag.call(request) if tag.is_a?(Proc)
32
+ next request.send(tag) if tag.is_a?(Symbol)
33
+
34
+ tag
35
+ end
36
+ end
27
37
 
28
- def execute_with_logging(request, env)
29
- current_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)
38
+ def process_request(env)
30
39
  data = { body: '', status: 500, start_time: current_time, headers: {} }
31
40
 
32
- begin
33
- data[:status], data[:headers], response = @app.call(env)
34
- data[:body] = extract_body_safely(response || [])
41
+ data[:status], data[:headers], response = @app.call(env)
42
+ data[:body] = extract_body_safely(response || [])
43
+ data
44
+ end
35
45
 
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
46
+ def dispatch_request_event(request)
47
+ instrumenter = ActiveSupport::Notifications.instrumenter
48
+ handle = instrumenter.build_handle('request.action_dispatch', { request: request })
49
+ handle.start
50
+ handle
41
51
  end
42
52
 
43
53
  def log_request(request, env)
@@ -122,6 +132,10 @@ module MinatoLogger
122
132
  filter_sensitive_headers(headers)
123
133
  end
124
134
 
135
+ def current_time
136
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
137
+ end
138
+
125
139
  def filter_sensitive_headers(headers)
126
140
  return {} unless headers.is_a?(Hash)
127
141
 
@@ -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.13'
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.13
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-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport