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 +4 -4
- data/.rubocop.yml +3 -0
- data/lib/minato_logger/engine.rb +5 -1
- data/lib/minato_logger/middlewares/request_response_logger.rb +31 -21
- data/lib/minato_logger/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: 51344b63f46e1a72e359a1d2bce730996c7d8473cc96bd376a602fb26444c20b
|
|
4
|
+
data.tar.gz: c9c2b41076a8b6daa7e6d593492305f8bdb00d0873dda5a9fd96588b656b2f6f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b89b9daf1d56ffaa33c5447bfc7bc6b7a0861d0a14c37e950535d31f22f9f8345455974014eb8df55c8155f29ea502cf9de369252c86197519bc26887e845914
|
|
7
|
+
data.tar.gz: 37a12b74516a0b800ba9a3cfccb493e4a8a3f8072937f5a746b87c568ee7073973e69d10ad645b1592819a6f4721ff54d9d822472a8f1453fd058447f89cb639
|
data/.rubocop.yml
CHANGED
data/lib/minato_logger/engine.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
data[:status], data[:headers], response = @app.call(env)
|
|
33
|
+
data[:body] = extract_body_safely(response || [])
|
|
34
|
+
data
|
|
35
|
+
end
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
|
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.
|
|
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-
|
|
11
|
+
date: 2026-02-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|