unified_logger 0.1.0 → 0.1.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 +4 -4
- data/lib/unified_logger/job_logger.rb +1 -0
- data/lib/unified_logger/logger.rb +55 -41
- data/lib/unified_logger/railtie.rb +6 -1
- data/lib/unified_logger/request_logger.rb +2 -1
- data/lib/unified_logger/version.rb +1 -1
- data/lib/unified_logger.rb +10 -3
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f34d66cc38e92a52e408550171eee1d6ceae0986add635943f295647ddcdb514
|
|
4
|
+
data.tar.gz: 33b16e4caff961adee468add42c01d4a40b304285bd669470510b6b749c3ba44
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ec774f89b414ea15af8bf6f1c0493aaeff2ea1f41364ff9bf16913a7c468d5f7ce1baf8fffea17f6880ff514082d68e1c80483f14af949ad8df84e3547035525
|
|
7
|
+
data.tar.gz: c956c43f2eeca0cc91f9438cab02a579445f07e64952f0bc54157a237e5600e0d921e0e03a2de72ee05a8ff12655c89cdc645127d19e687137bf52ea6e0a286a
|
|
@@ -17,40 +17,38 @@ module UnifiedLogger
|
|
|
17
17
|
self.formatter = proc {}
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def debug(message = nil,
|
|
21
|
-
|
|
20
|
+
def debug(message = nil, &block)
|
|
21
|
+
message = block.call if message.nil? && block
|
|
22
|
+
add(::Logger::DEBUG, message)
|
|
22
23
|
end
|
|
23
24
|
|
|
24
|
-
def info(message = nil,
|
|
25
|
-
|
|
25
|
+
def info(message = nil, &block)
|
|
26
|
+
message = block.call if message.nil? && block
|
|
27
|
+
add(::Logger::INFO, message)
|
|
26
28
|
end
|
|
27
29
|
|
|
28
|
-
def warn(message = nil,
|
|
29
|
-
|
|
30
|
+
def warn(message = nil, &block)
|
|
31
|
+
message = block.call if message.nil? && block
|
|
32
|
+
add(::Logger::WARN, message)
|
|
30
33
|
end
|
|
31
34
|
|
|
32
|
-
def error(message = nil,
|
|
33
|
-
|
|
35
|
+
def error(message = nil, &block)
|
|
36
|
+
message = block.call if message.nil? && block
|
|
37
|
+
add(::Logger::ERROR, message)
|
|
34
38
|
end
|
|
35
39
|
|
|
36
|
-
def fatal(message = nil,
|
|
37
|
-
|
|
40
|
+
def fatal(message = nil, &block)
|
|
41
|
+
message = block.call if message.nil? && block
|
|
42
|
+
add(::Logger::FATAL, message)
|
|
38
43
|
end
|
|
39
44
|
|
|
40
|
-
def unknown(message = nil,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def add(severity, message = nil, params = {})
|
|
45
|
-
return true if message.blank?
|
|
46
|
-
return true unless severity >= level
|
|
47
|
-
|
|
48
|
-
severity_symbol = SEVERITY_MAP[severity] || :unknown
|
|
49
|
-
self.class.append_custom_log(severity_symbol, message, params)
|
|
45
|
+
def unknown(message = nil, &block)
|
|
46
|
+
message = block.call if message.nil? && block
|
|
47
|
+
add(::Logger::UNKNOWN, message)
|
|
50
48
|
end
|
|
51
49
|
|
|
52
50
|
def <<(message)
|
|
53
|
-
add(::Logger::UNKNOWN, message.to_s.chomp
|
|
51
|
+
add(::Logger::UNKNOWN, message.to_s.chomp)
|
|
54
52
|
self
|
|
55
53
|
end
|
|
56
54
|
|
|
@@ -103,41 +101,57 @@ module UnifiedLogger
|
|
|
103
101
|
end
|
|
104
102
|
end
|
|
105
103
|
|
|
104
|
+
def format(log)
|
|
105
|
+
filtered_log = filter(log)
|
|
106
|
+
formatter = UnifiedLogger.log_transformer
|
|
107
|
+
formatter.present? ? formatter.call(filtered_log) : filtered_log.to_json
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
private
|
|
111
|
+
|
|
106
112
|
def filter(content)
|
|
107
113
|
return content unless content.respond_to?(:each)
|
|
108
114
|
|
|
109
115
|
filter_class = if defined?(ActiveSupport::ParameterFilter)
|
|
110
116
|
ActiveSupport::ParameterFilter
|
|
111
|
-
|
|
117
|
+
elsif defined?(ActionDispatch::Http::ParameterFilter)
|
|
112
118
|
ActionDispatch::Http::ParameterFilter
|
|
113
119
|
end
|
|
120
|
+
return content unless filter_class
|
|
121
|
+
|
|
114
122
|
filter_class.new(UnifiedLogger.config[:filter_params]).filter(content)
|
|
115
123
|
end
|
|
124
|
+
end
|
|
116
125
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
formatter.present? ? formatter.call(filtered_log) : filtered_log.to_json
|
|
126
|
+
def add(severity, message = nil, progname = nil, &block)
|
|
127
|
+
if message.nil?
|
|
128
|
+
message = block ? block.call : progname
|
|
121
129
|
end
|
|
122
130
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
log_hash = { timestamp: UnifiedLogger.current_time, severity: severity,
|
|
126
|
-
message: clean_message, params: params }.compact_blank
|
|
131
|
+
return true if message.blank?
|
|
132
|
+
return true unless severity >= level
|
|
127
133
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
134
|
+
severity_symbol = SEVERITY_MAP[severity] || :unknown
|
|
135
|
+
append_custom_log(severity_symbol, message)
|
|
136
|
+
end
|
|
131
137
|
|
|
132
|
-
|
|
133
|
-
return text unless text.is_a?(String)
|
|
138
|
+
private
|
|
134
139
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
140
|
+
def append_custom_log(severity, message)
|
|
141
|
+
message = sanitize_log_message(message) if message.is_a?(String)
|
|
142
|
+
log_hash = { timestamp: UnifiedLogger.formatted_time, severity: severity, message: message }
|
|
143
|
+
|
|
144
|
+
CUSTOM_LOGS.value = CUSTOM_LOGS.value + [log_hash]
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def sanitize_log_message(text)
|
|
148
|
+
return text unless text.is_a?(String)
|
|
149
|
+
|
|
150
|
+
text = text.gsub(/\e\[[0-9;]*m/, "")
|
|
151
|
+
text = text.gsub(%r{[^a-zA-Z0-9\s.,;:!?'"()\[\]{}\-_@#$%&*+=<>|~`/]}, "")
|
|
152
|
+
text = text.gsub('"', "'")
|
|
153
|
+
text = text.gsub(/\s+/, " ")
|
|
154
|
+
text.strip
|
|
141
155
|
end
|
|
142
156
|
end
|
|
143
157
|
end
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module UnifiedLogger
|
|
2
4
|
class Railtie < Rails::Railtie
|
|
3
5
|
initializer "unified_logger.middleware", after: :load_config_initializers do |app|
|
|
4
|
-
|
|
6
|
+
if UnifiedLogger.config[:auto_insert_middleware]
|
|
7
|
+
app.middleware.insert_after ActionDispatch::DebugExceptions,
|
|
8
|
+
UnifiedLogger::RequestLogger
|
|
9
|
+
end
|
|
5
10
|
end
|
|
6
11
|
end
|
|
7
12
|
end
|
|
@@ -37,6 +37,7 @@ module UnifiedLogger
|
|
|
37
37
|
query_string = env["QUERY_STRING"]
|
|
38
38
|
log = {
|
|
39
39
|
log_type: :request,
|
|
40
|
+
timestamp: UnifiedLogger.formatted_time,
|
|
40
41
|
id: env["action_dispatch.request_id"],
|
|
41
42
|
ip: env["action_dispatch.remote_ip"].to_s,
|
|
42
43
|
controller: path_parameters[:controller],
|
|
@@ -80,7 +81,7 @@ module UnifiedLogger
|
|
|
80
81
|
return nil if content_type&.exclude?("application/") && content_type.exclude?("text/plain")
|
|
81
82
|
return response_body(response.body, content_type) if response.respond_to?(:body)
|
|
82
83
|
|
|
83
|
-
body = response.respond_to?(:map) ? response.
|
|
84
|
+
body = response.respond_to?(:map) ? response.join : response.to_s
|
|
84
85
|
|
|
85
86
|
parse_body(body, content_type)
|
|
86
87
|
ensure
|
data/lib/unified_logger.rb
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
require "concurrent"
|
|
2
2
|
require "active_support/core_ext/object/blank"
|
|
3
3
|
require "active_support/core_ext/enumerable"
|
|
4
|
-
|
|
4
|
+
begin
|
|
5
|
+
require "active_support/parameter_filter"
|
|
6
|
+
rescue LoadError
|
|
7
|
+
# ActiveSupport < 6.0; falls back to ActionDispatch::Http::ParameterFilter at runtime
|
|
8
|
+
end
|
|
5
9
|
require "active_support/backtrace_cleaner"
|
|
6
10
|
require "json"
|
|
7
11
|
require "logger"
|
|
@@ -50,8 +54,7 @@ module UnifiedLogger
|
|
|
50
54
|
@log_transformer = callable
|
|
51
55
|
end
|
|
52
56
|
|
|
53
|
-
delegate :trim, :
|
|
54
|
-
:clean_log_message, :append_custom_log,
|
|
57
|
+
delegate :trim, :format, :format_exception,
|
|
55
58
|
:custom_logs, :fetch_and_reset_custom_logs, :reset_thread_logs,
|
|
56
59
|
to: :"UnifiedLogger::Logger"
|
|
57
60
|
end
|
|
@@ -76,6 +79,10 @@ module UnifiedLogger
|
|
|
76
79
|
def self.current_time
|
|
77
80
|
Time.zone&.now || Time.now.utc
|
|
78
81
|
end
|
|
82
|
+
|
|
83
|
+
def self.formatted_time
|
|
84
|
+
current_time.iso8601(3)
|
|
85
|
+
end
|
|
79
86
|
end
|
|
80
87
|
|
|
81
88
|
require "unified_logger/railtie" if defined?(Rails::Railtie)
|