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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b1182b4653c380d8b35b55733c0ba47fa4c5eff722178765dfe6b2f1fddaf8c
4
- data.tar.gz: 7b94cd76f7288dffa0004f69a57e633ffa2342cfb67969031e8822f02a96aab6
3
+ metadata.gz: f34d66cc38e92a52e408550171eee1d6ceae0986add635943f295647ddcdb514
4
+ data.tar.gz: 33b16e4caff961adee468add42c01d4a40b304285bd669470510b6b749c3ba44
5
5
  SHA512:
6
- metadata.gz: 3a6090da5a5deb10ad56cf57c475342517dc854658bd23934b4a4c7bf247060cb0851a96af50698b8dd1ca268c8f2a147a4e7478df05931fd3cf0c7e2a3093f6
7
- data.tar.gz: 23df148c3859f4e42f1646ddc94d774de39ed9908e74660035ebbe618f8b81d709d9fc5dbe96a0454d71ae4058c2df0ec2a65799d6d3e68caee49883d5d88b8e
6
+ metadata.gz: ec774f89b414ea15af8bf6f1c0493aaeff2ea1f41364ff9bf16913a7c468d5f7ce1baf8fffea17f6880ff514082d68e1c80483f14af949ad8df84e3547035525
7
+ data.tar.gz: c956c43f2eeca0cc91f9438cab02a579445f07e64952f0bc54157a237e5600e0d921e0e03a2de72ee05a8ff12655c89cdc645127d19e687137bf52ea6e0a286a
@@ -16,6 +16,7 @@ module UnifiedLogger
16
16
  def log_execution(job)
17
17
  log = {
18
18
  log_type: :job,
19
+ timestamp: UnifiedLogger.formatted_time,
19
20
  class_name: job.class.name,
20
21
  id: job.job_id,
21
22
  queue: job.queue_name,
@@ -17,40 +17,38 @@ module UnifiedLogger
17
17
  self.formatter = proc {}
18
18
  end
19
19
 
20
- def debug(message = nil, params = {})
21
- add(::Logger::DEBUG, message, params)
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, params = {})
25
- add(::Logger::INFO, message, params)
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, params = {})
29
- add(::Logger::WARN, message, params)
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, params = {})
33
- add(::Logger::ERROR, message, params)
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, params = {})
37
- add(::Logger::FATAL, message, params)
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, params = {})
41
- add(::Logger::UNKNOWN, message, params)
42
- end
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
- else
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
- def format(log)
118
- filtered_log = filter(log)
119
- formatter = UnifiedLogger.log_transformer
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
- def append_custom_log(severity, message, params)
124
- clean_message = clean_log_message(message)
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
- CUSTOM_LOGS.value = CUSTOM_LOGS.value + [log_hash]
129
- true
130
- end
134
+ severity_symbol = SEVERITY_MAP[severity] || :unknown
135
+ append_custom_log(severity_symbol, message)
136
+ end
131
137
 
132
- def clean_log_message(text)
133
- return text unless text.is_a?(String)
138
+ private
134
139
 
135
- text = text.gsub(/\e\[[0-9;]*m/, "")
136
- text = text.gsub(%r{[^a-zA-Z0-9\s.,;:!?'"()\[\]{}\-_@#$%&*+=<>|~`/]}, "")
137
- text = text.gsub('"', "'")
138
- text = text.gsub(/\s+/, " ")
139
- text.strip
140
- end
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
- app.middleware.insert_after ActionDispatch::DebugExceptions, UnifiedLogger::RequestLogger if UnifiedLogger.config[:auto_insert_middleware]
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.map(&:to_s).join : response.to_s
84
+ body = response.respond_to?(:map) ? response.join : response.to_s
84
85
 
85
86
  parse_body(body, content_type)
86
87
  ensure
@@ -1,3 +1,3 @@
1
1
  module UnifiedLogger
2
- VERSION = "0.1.0".freeze
2
+ VERSION = "0.1.2".freeze
3
3
  end
@@ -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
- require "active_support/parameter_filter"
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, :filter, :format, :format_exception,
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)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unified_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcovecchio