rails_semantic_logger 4.13.0 → 4.15.0

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: b82f4b18da96047400658caaf0cbdb073ac21d0d9dfc9f8e89a270fae80550af
4
- data.tar.gz: fcef56ce1f917619d302b3dced8680748f0945c3a5a16763aadf21007ef1a00d
3
+ metadata.gz: 3bb41dd02df0dc0dc472a66f83a82146878942a309670d4fb10da64bfdae4bc4
4
+ data.tar.gz: c1463e8da359c87fffc4e7d4e56919609320473fa0702b6a7f9b9fec1bdc5050
5
5
  SHA512:
6
- metadata.gz: 6ca5b2a92ca494065abb52d7d44eb71e06ba044f190c10b710549b609f78924542eb4f5eb126c54f98bc1248daaa7e1e29b35139c527081f178c1119be76acdc
7
- data.tar.gz: 604c669579b6bf2e25b718008406fd2a5bfcacd32f39a5714b05656773e59634d15d10d3afd0277c098bc73f5836e577ad1412669947598b206f22e5af4379d4
6
+ metadata.gz: 1604cdbeed7b9bda178517f7cd7f72e4721523cf222aa6b0a2dcce36fc77c62807641ca32aef349f91c9e5aa86d04e9202e15adff71e4b5e4e29798a3c9dde16
7
+ data.tar.gz: b0e79372c2111bb823c191595a600c8c4c218e6989249f66c0ec46d66826116abfe2f6c5c761d33ae23f1494e7a74b8299d70b037410570757195115b212dced
@@ -14,10 +14,10 @@ module RailsSemanticLogger
14
14
 
15
15
  # Unused, but needed for Devise 401 status code monkey patch to still work.
16
16
  ::ActionController::Base.log_process_action(payload)
17
-
17
+
18
18
  params = payload[:params]
19
19
 
20
- if params.kind_of?(Hash) || params.kind_of?(::ActionController::Parameters)
20
+ if params.is_a?(Hash) || params.is_a?(::ActionController::Parameters)
21
21
  # According to PR https://github.com/reidmorrison/rails_semantic_logger/pull/37/files
22
22
  # params is not always a Hash.
23
23
  payload[:params] = params.to_unsafe_h unless params.is_a?(Hash)
@@ -79,7 +79,9 @@ module RailsSemanticLogger
79
79
  end
80
80
 
81
81
  def send_data(event)
82
- controller_logger(event).info(message: "Sent data", payload: {file_name: event.payload[:filename]}, duration: event.duration)
82
+ controller_logger(event).info(message: "Sent data",
83
+ payload: {file_name: event.payload[:filename]},
84
+ duration: event.duration)
83
85
  end
84
86
 
85
87
  def unpermitted_parameters(event)
@@ -9,22 +9,22 @@ module RailsSemanticLogger
9
9
  message_id = event.payload[:message_id]
10
10
  duration = event.duration.round(1)
11
11
  if ex
12
- log_with_formatter event: event, log_duration: true, level: :error do |fmt|
12
+ log_with_formatter event: event, log_duration: true, level: :error do |_fmt|
13
13
  {
14
- message: "Error delivering mail #{message_id} (#{duration}ms)",
14
+ message: "Error delivering mail #{message_id} (#{duration}ms)",
15
15
  exception: ex
16
16
  }
17
17
  end
18
18
  else
19
- message = begin
19
+ message =
20
20
  if event.payload[:perform_deliveries]
21
21
  "Delivered mail #{message_id} (#{duration}ms)"
22
22
  else
23
23
  "Skipped delivery of mail #{message_id} as `perform_deliveries` is false"
24
24
  end
25
- end
26
- log_with_formatter event: event, log_duration: true do |fmt|
27
- { message: message }
25
+
26
+ log_with_formatter event: event, log_duration: true do |_fmt|
27
+ {message: message}
28
28
  end
29
29
  end
30
30
  end
@@ -34,8 +34,8 @@ module RailsSemanticLogger
34
34
  mailer = event.payload[:mailer]
35
35
  action = event.payload[:action]
36
36
  duration = event.duration.round(1)
37
- log_with_formatter event: event do |fmt|
38
- { message: "#{mailer}##{action}: processed outbound mail in #{duration}ms" }
37
+ log_with_formatter event: event do |_fmt|
38
+ {message: "#{mailer}##{action}: processed outbound mail in #{duration}ms"}
39
39
  end
40
40
  end
41
41
 
@@ -74,8 +74,6 @@ module RailsSemanticLogger
74
74
  event.payload[:date].to_time.utc
75
75
  elsif event.payload[:date].is_a?(String)
76
76
  Time.parse(date).utc
77
- else
78
- nil
79
77
  end
80
78
  end
81
79
 
@@ -94,8 +92,8 @@ module RailsSemanticLogger
94
92
  def formatted_args
95
93
  if defined?(mailer.constantize.log_arguments?) && !mailer.constantize.log_arguments?
96
94
  ""
97
- else
98
- JSON.pretty_generate(event.payload[:args].map { |arg| format(arg) }) if event.payload[:args].present?
95
+ elsif event.payload[:args].present?
96
+ JSON.pretty_generate(event.payload[:args].map { |arg| format(arg) })
99
97
  end
100
98
  end
101
99
 
@@ -19,7 +19,7 @@ module RailsSemanticLogger
19
19
  def render_template(event)
20
20
  return unless should_log?
21
21
 
22
- payload = {
22
+ payload = {
23
23
  template: from_rails_root(event.payload[:identifier])
24
24
  }
25
25
  payload[:within] = from_rails_root(event.payload[:layout]) if event.payload[:layout]
@@ -36,7 +36,7 @@ module RailsSemanticLogger
36
36
  def render_partial(event)
37
37
  return unless should_log?
38
38
 
39
- payload = {
39
+ payload = {
40
40
  partial: from_rails_root(event.payload[:identifier])
41
41
  }
42
42
  payload[:within] = from_rails_root(event.payload[:layout]) if event.payload[:layout]
@@ -56,7 +56,7 @@ module RailsSemanticLogger
56
56
 
57
57
  identifier = event.payload[:identifier] || "templates"
58
58
 
59
- payload = {
59
+ payload = {
60
60
  template: from_rails_root(identifier),
61
61
  count: event.payload[:count]
62
62
  }
@@ -72,9 +72,9 @@ module RailsSemanticLogger
72
72
  end
73
73
 
74
74
  def start(name, id, payload)
75
- if (name == "render_template.action_view" || name == "render_layout.action_view") && should_log?
75
+ if ["render_template.action_view", "render_layout.action_view"].include?(name) && should_log?
76
76
  qualifier = " layout" if name == "render_layout.action_view"
77
- payload = { template: from_rails_root(payload[:identifier]) }
77
+ payload = {template: from_rails_root(payload[:identifier])}
78
78
  payload[:within] = from_rails_root(payload[:layout]) if payload[:layout]
79
79
 
80
80
  logger.send(self.class.rendered_log_level, message: "Rendering#{qualifier}", payload: payload)
@@ -84,18 +84,19 @@ module RailsSemanticLogger
84
84
  end
85
85
 
86
86
  if (Rails::VERSION::MAJOR == 7 && Rails::VERSION::MINOR >= 1) || Rails::VERSION::MAJOR > 7
87
- class Start # :nodoc:
88
- def start(name, id, payload)
87
+ class Start
88
+ def start(name, _id, payload)
89
89
  return unless %w[render_template.action_view render_layout.action_view].include?(name)
90
90
 
91
91
  qualifier = " layout" if name == "render_layout.action_view"
92
- payload = { template: from_rails_root(payload[:identifier]) }
92
+ payload = {template: from_rails_root(payload[:identifier])}
93
93
  payload[:within] = from_rails_root(payload[:layout]) if payload[:layout]
94
94
 
95
95
  logger.debug(message: "Rendering#{qualifier}", payload: payload)
96
96
  end
97
97
 
98
- def finish(name, id, payload) end
98
+ def finish(name, id, payload)
99
+ end
99
100
 
100
101
  private
101
102
 
@@ -105,7 +106,7 @@ module RailsSemanticLogger
105
106
  string
106
107
  end
107
108
 
108
- def rails_root # :doc:
109
+ def rails_root
109
110
  @root ||= "#{Rails.root}/"
110
111
  end
111
112
 
@@ -117,8 +118,10 @@ module RailsSemanticLogger
117
118
  def self.attach_to(*)
118
119
  ActiveSupport::Notifications.unsubscribe("render_template.action_view")
119
120
  ActiveSupport::Notifications.unsubscribe("render_layout.action_view")
120
- ActiveSupport::Notifications.subscribe("render_template.action_view", RailsSemanticLogger::ActionView::LogSubscriber::Start.new)
121
- ActiveSupport::Notifications.subscribe("render_layout.action_view", RailsSemanticLogger::ActionView::LogSubscriber::Start.new)
121
+ ActiveSupport::Notifications.subscribe("render_template.action_view",
122
+ RailsSemanticLogger::ActionView::LogSubscriber::Start.new)
123
+ ActiveSupport::Notifications.subscribe("render_layout.action_view",
124
+ RailsSemanticLogger::ActionView::LogSubscriber::Start.new)
122
125
 
123
126
  super
124
127
  end
@@ -9,17 +9,17 @@ module RailsSemanticLogger
9
9
  if ex
10
10
  log_with_formatter level: :error, event: event do |fmt|
11
11
  {
12
- message: "Failed enqueuing #{fmt.job_info} (#{ex.class} (#{ex.message})",
12
+ message: "Failed enqueuing #{fmt.job_info} (#{ex.class} (#{ex.message})",
13
13
  exception: ex
14
14
  }
15
15
  end
16
16
  elsif event.payload[:aborted]
17
17
  log_with_formatter level: :info, event: event do |fmt|
18
- { message: "Failed enqueuing #{fmt.job_info}, a before_enqueue callback halted the enqueuing execution." }
18
+ {message: "Failed enqueuing #{fmt.job_info}, a before_enqueue callback halted the enqueuing execution."}
19
19
  end
20
20
  else
21
21
  log_with_formatter event: event do |fmt|
22
- { message: "Enqueued #{fmt.job_info}" }
22
+ {message: "Enqueued #{fmt.job_info}"}
23
23
  end
24
24
  end
25
25
  end
@@ -30,13 +30,13 @@ module RailsSemanticLogger
30
30
  if ex
31
31
  log_with_formatter level: :error, event: event do |fmt|
32
32
  {
33
- message: "Failed enqueuing #{fmt.job_info} (#{ex.class} (#{ex.message})",
33
+ message: "Failed enqueuing #{fmt.job_info} (#{ex.class} (#{ex.message})",
34
34
  exception: ex
35
35
  }
36
36
  end
37
37
  elsif event.payload[:aborted]
38
38
  log_with_formatter level: :info, event: event do |fmt|
39
- { message: "Failed enqueuing #{fmt.job_info}, a before_enqueue callback halted the enqueuing execution." }
39
+ {message: "Failed enqueuing #{fmt.job_info}, a before_enqueue callback halted the enqueuing execution."}
40
40
  end
41
41
  else
42
42
  log_with_formatter event: event do |fmt|
@@ -56,7 +56,7 @@ module RailsSemanticLogger
56
56
  if ex
57
57
  log_with_formatter event: event, log_duration: true, level: :error do |fmt|
58
58
  {
59
- message: "Error performing #{fmt.job_info} in #{event.duration.round(2)}ms",
59
+ message: "Error performing #{fmt.job_info} in #{event.duration.round(2)}ms",
60
60
  exception: ex
61
61
  }
62
62
  end
@@ -169,9 +169,7 @@ module RailsSemanticLogger
169
169
  def render_bind_v6_1(attr, value)
170
170
  case attr
171
171
  when ActiveModel::Attribute
172
- if attr.type.binary? && attr.value
173
- value = "<#{attr.value_for_database.to_s.bytesize} bytes of binary data>"
174
- end
172
+ value = "<#{attr.value_for_database.to_s.bytesize} bytes of binary data>" if attr.type.binary? && attr.value
175
173
  when Array
176
174
  attr = attr.first
177
175
  else
@@ -77,7 +77,7 @@ module RailsSemanticLogger
77
77
  logger = SemanticLogger[Rails]
78
78
  logger.warn(
79
79
  "Rails Error: Unable to access log file. Please ensure that #{path} exists and is chmod 0666. " \
80
- "The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.",
80
+ "The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.",
81
81
  e
82
82
  )
83
83
  logger
@@ -111,14 +111,14 @@ module RailsSemanticLogger
111
111
  if defined?(Sidekiq)
112
112
  if Sidekiq.respond_to?(:logger=)
113
113
  Sidekiq.logger = SemanticLogger[Sidekiq]
114
- elsif Sidekiq::VERSION[0..1] == '7.'
114
+ elsif Sidekiq::VERSION[0..1] == "7."
115
115
  method = Sidekiq.server? ? :configure_server : :configure_client
116
116
  Sidekiq.public_send(method) { |cfg| cfg.logger = SemanticLogger[Sidekiq] }
117
117
  end
118
118
  end
119
119
 
120
120
  # Replace the Sidetiq logger
121
- Sidetiq.logger = SemanticLogger[Sidetiq] if defined?(Sidetiq) && Sidetiq.respond_to?(:logger=)
121
+ Sidetiq.logger = SemanticLogger[Sidetiq] if defined?(Sidetiq) && Sidetiq.respond_to?(:logger=)
122
122
 
123
123
  # Replace the DelayedJob logger
124
124
  if defined?(Delayed::Worker)
@@ -143,7 +143,9 @@ module RailsSemanticLogger
143
143
  # Rails Patches
144
144
  require("rails_semantic_logger/extensions/action_cable/tagged_logger_proxy") if defined?(::ActionCable)
145
145
  require("rails_semantic_logger/extensions/action_controller/live") if defined?(::ActionController::Live)
146
- require("rails_semantic_logger/extensions/action_dispatch/debug_exceptions") if defined?(::ActionDispatch::DebugExceptions)
146
+ if defined?(::ActionDispatch::DebugExceptions)
147
+ require("rails_semantic_logger/extensions/action_dispatch/debug_exceptions")
148
+ end
147
149
  if defined?(::ActionView::StreamingTemplateRenderer::Body)
148
150
  require("rails_semantic_logger/extensions/action_view/streaming_template_renderer")
149
151
  end
@@ -222,6 +224,8 @@ module RailsSemanticLogger
222
224
  :action_mailer
223
225
  )
224
226
  end
227
+
228
+ require("rails_semantic_logger/extensions/sidekiq/sidekiq") if defined?(::Sidekiq)
225
229
  end
226
230
 
227
231
  #
@@ -237,7 +241,7 @@ module RailsSemanticLogger
237
241
  end
238
242
 
239
243
  # Re-open appenders after Resque has forked a worker
240
- Resque.after_fork { |_job| ::SemanticLogger.reopen } if defined?(Resque)
244
+ Resque.after_fork { |_job| ::SemanticLogger.reopen } if defined?(Resque.after_fork)
241
245
 
242
246
  # Re-open appenders after Spring has forked a process
243
247
  Spring.after_fork { |_job| ::SemanticLogger.reopen } if defined?(Spring.after_fork)
@@ -6,9 +6,17 @@ module ActionDispatch
6
6
  private
7
7
 
8
8
  undef_method :log_error
9
- def log_error(_request, wrapper)
10
- ActiveSupport::Deprecation.silence do
11
- ActionController::Base.logger.fatal(wrapper.exception)
9
+ if (Rails::VERSION::MAJOR == 7 && Rails::VERSION::MINOR >= 1) || Rails::VERSION::MAJOR > 7
10
+ def log_error(_request, wrapper)
11
+ Rails.application.deprecators.silence do
12
+ ActionController::Base.logger.fatal(wrapper.exception)
13
+ end
14
+ end
15
+ else
16
+ def log_error(_request, wrapper)
17
+ ActiveSupport::Deprecation.silence do
18
+ ActionController::Base.logger.fatal(wrapper.exception)
19
+ end
12
20
  end
13
21
  end
14
22
  end
@@ -1,11 +1,13 @@
1
- require "active_support/log_subscriber"
1
+ if ActiveSupport::VERSION::STRING == "7.1.1"
2
+ require "active_support/log_subscriber"
2
3
 
3
- module ActiveSupport
4
- class LogSubscriber
5
- # @override Rails 7.1
6
- def silenced?(event)
7
- native_log_level = @event_levels.fetch(event, ::Logger::Severity::FATAL)
8
- logger.nil? || SemanticLogger::Levels.index(logger.level) > SemanticLogger::Levels.index(native_log_level)
4
+ module ActiveSupport
5
+ class LogSubscriber
6
+ # @override Rails 7.1
7
+ def silenced?(event)
8
+ native_log_level = @event_levels.fetch(event, ::Logger::Severity::FATAL)
9
+ logger.nil? || SemanticLogger::Levels.index(logger.level) > SemanticLogger::Levels.index(native_log_level)
10
+ end
9
11
  end
10
12
  end
11
13
  end
@@ -9,18 +9,18 @@ module ActiveSupport
9
9
  # Prevent broadcasting since SemanticLogger already supports multiple loggers
10
10
  if method_defined?(:broadcast)
11
11
  undef :broadcast
12
- def broadcast(logger)
12
+ def broadcast(_logger)
13
13
  Module.new
14
14
  end
15
15
  end
16
16
  end
17
17
 
18
18
  # Prevent Console from trying to merge loggers
19
- def self.logger_outputs_to?(*args)
19
+ def self.logger_outputs_to?(*_args)
20
20
  true
21
21
  end
22
22
 
23
- def self.new(*args, **kwargs)
23
+ def self.new(*_args, **_kwargs)
24
24
  SemanticLogger[self]
25
25
  end
26
26
  end
@@ -0,0 +1,12 @@
1
+ module RailsSemanticLogger
2
+ module Rackup
3
+ module Server
4
+ def daemonize_app
5
+ super
6
+ SemanticLogger.reopen
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ Rackup::Server.prepend(RailsSemanticLogger::Rackup::Server)
@@ -4,7 +4,7 @@ require "rails"
4
4
  module Rails
5
5
  class Server
6
6
  private
7
-
7
+
8
8
  undef_method :log_to_stdout if method_defined?(:log_to_stdout)
9
9
  def log_to_stdout
10
10
  wrapped_app # touch the app so the logger is set up
@@ -0,0 +1,211 @@
1
+ # Sidekiq patches
2
+ #
3
+ # To re-enable stdout logging for sidekiq server processes, add the following snippet to config/initializers/sidekiq.rb:
4
+ # Sidekiq.configure_server do |config|
5
+ # SemanticLogger.add_appender(io: $stdout, level: :debug, formatter: :color)
6
+ # end
7
+ if Sidekiq::VERSION.to_i == 4
8
+ require "sidekiq/exception_handler"
9
+ require "sidekiq/logging"
10
+ require "sidekiq/middleware/server/logging"
11
+ require "sidekiq/processor"
12
+ require "sidekiq/worker"
13
+ elsif Sidekiq::VERSION.to_i == 5
14
+ require "sidekiq/exception_handler"
15
+ require "sidekiq/job_logger"
16
+ require "sidekiq/logging"
17
+ require "sidekiq/worker"
18
+ elsif Sidekiq::VERSION.to_i == 6 && Sidekiq::VERSION.to_f < 6.5
19
+ require "sidekiq/exception_handler"
20
+ require "sidekiq/job_logger"
21
+ require "sidekiq/worker"
22
+ elsif Sidekiq::VERSION.to_i == 6
23
+ require "sidekiq/job_logger"
24
+ require "sidekiq/worker"
25
+ else
26
+ require "sidekiq/config"
27
+ require "sidekiq/job_logger"
28
+ require "sidekiq/job"
29
+ end
30
+
31
+ module Sidekiq
32
+ # Sidekiq > v4
33
+ if defined?(::Sidekiq::JobLogger)
34
+ # Let Semantic Logger handle duration logging
35
+ class JobLogger
36
+ def call(item, queue)
37
+ klass = item["wrapped"] || item["class"]
38
+ metric = "Sidekiq/#{klass}/perform" if klass
39
+ logger = klass ? SemanticLogger[klass] : Sidekiq.logger
40
+ logger.info("Start #perform")
41
+ logger.measure_info(
42
+ "Completed #perform",
43
+ on_exception_level: :error,
44
+ log_exception: :full,
45
+ metric: metric
46
+ ) do
47
+ yield
48
+ end
49
+ end
50
+
51
+ def prepare(job_hash, &block)
52
+ level = job_hash["log_level"]
53
+ if level
54
+ SemanticLogger.silence(level) do
55
+ SemanticLogger.tagged(job_hash_context(job_hash), &block)
56
+ end
57
+ else
58
+ SemanticLogger.tagged(job_hash_context(job_hash), &block)
59
+ end
60
+ end
61
+
62
+ def job_hash_context(job_hash)
63
+ h = {
64
+ class: job_hash["display_class"] || job_hash["wrapped"] || job_hash["class"],
65
+ jid: job_hash["jid"]
66
+ }
67
+ h[:bid] = job_hash["bid"] if job_hash["bid"]
68
+ h[:tags] = job_hash["tags"] if job_hash["tags"]
69
+ h
70
+ end
71
+ end
72
+ end
73
+
74
+ # Sidekiq <= v6
75
+ if defined?(::Sidekiq::Logging)
76
+ # Replace Sidekiq logging context
77
+ module Logging
78
+ def self.with_context(msg, &block)
79
+ SemanticLogger.tagged(msg, &block)
80
+ end
81
+
82
+ def self.job_hash_context(job_hash)
83
+ klass = job_hash["wrapped"] || job_hash["class"]
84
+ event = { class: klass, jid: job_hash["jid"] }
85
+ event[:bid] = job_hash["bid"] if job_hash["bid"]
86
+ event
87
+ end
88
+ end
89
+ end
90
+
91
+ # Exception is already logged by Semantic Logger during the perform call
92
+ # Sidekiq <= v6.5
93
+ if defined?(::Sidekiq::ExceptionHandler)
94
+ module ExceptionHandler
95
+ class Logger
96
+ def call(ex, ctx)
97
+ unless ctx.empty?
98
+ job_hash = ctx[:job] || {}
99
+ klass = job_hash["display_class"] || job_hash["wrapped"] || job_hash["class"]
100
+ logger = klass ? SemanticLogger[klass] : Sidekiq.logger
101
+ ctx[:context] ? logger.warn(ctx[:context], ctx) : logger.warn(ctx)
102
+ end
103
+ end
104
+ end
105
+ end
106
+ # Sidekiq >= v7
107
+ elsif defined?(::Sidekiq::Config)
108
+ class Config
109
+ remove_const :ERROR_HANDLER
110
+
111
+ ERROR_HANDLER = ->(ex, ctx, cfg = Sidekiq.default_configuration) {
112
+ unless ctx.empty?
113
+ job_hash = ctx[:job] || {}
114
+ klass = job_hash["display_class"] || job_hash["wrapped"] || job_hash["class"]
115
+ logger = klass ? SemanticLogger[klass] : Sidekiq.logger
116
+ ctx[:context] ? logger.warn(ctx[:context], ctx) : logger.warn(ctx)
117
+ end
118
+ }
119
+ end
120
+ else
121
+ # Sidekiq >= 6.5
122
+ # TODO: Not taking effect. See test/sidekiq_test.rb
123
+ def self.default_error_handler(ex, ctx)
124
+ binding.irb
125
+ unless ctx.empty?
126
+ job_hash = ctx[:job] || {}
127
+ klass = job_hash["display_class"] || job_hash["wrapped"] || job_hash["class"]
128
+ logger = klass ? SemanticLogger[klass] : Sidekiq.logger
129
+ ctx[:context] ? logger.warn(ctx[:context], ctx) : logger.warn(ctx)
130
+ end
131
+ end
132
+ end
133
+
134
+ # Logging within each worker should use its own logger
135
+ if Sidekiq::VERSION.to_i == 4
136
+ module Worker
137
+ def self.included(base)
138
+ raise ArgumentError, "You cannot include Sidekiq::Worker in an ActiveJob: #{base.name}" if base.ancestors.any? { |c| c.name == "ActiveJob::Base" }
139
+
140
+ base.extend(ClassMethods)
141
+ base.include(SemanticLogger::Loggable)
142
+ base.class_attribute :sidekiq_options_hash
143
+ base.class_attribute :sidekiq_retry_in_block
144
+ base.class_attribute :sidekiq_retries_exhausted_block
145
+ end
146
+ end
147
+ elsif Sidekiq::VERSION.to_i == 5
148
+ module Worker
149
+ def self.included(base)
150
+ raise ArgumentError, "You cannot include Sidekiq::Worker in an ActiveJob: #{base.name}" if base.ancestors.any? { |c| c.name == "ActiveJob::Base" }
151
+
152
+ base.extend(ClassMethods)
153
+ base.include(SemanticLogger::Loggable)
154
+ base.sidekiq_class_attribute :sidekiq_options_hash
155
+ base.sidekiq_class_attribute :sidekiq_retry_in_block
156
+ base.sidekiq_class_attribute :sidekiq_retries_exhausted_block
157
+ end
158
+ end
159
+ elsif Sidekiq::VERSION.to_i == 6
160
+ module Worker
161
+ def self.included(base)
162
+ raise ArgumentError, "Sidekiq::Worker cannot be included in an ActiveJob: #{base.name}" if base.ancestors.any? { |c| c.name == "ActiveJob::Base" }
163
+
164
+ base.include(Options)
165
+ base.extend(ClassMethods)
166
+ base.include(SemanticLogger::Loggable)
167
+ end
168
+ end
169
+ else
170
+ module Job
171
+ def self.included(base)
172
+ raise ArgumentError, "Sidekiq::Job cannot be included in an ActiveJob: #{base.name}" if base.ancestors.any? { |c| c.name == "ActiveJob::Base" }
173
+
174
+ base.include(Options)
175
+ base.extend(ClassMethods)
176
+ base.include(SemanticLogger::Loggable)
177
+ end
178
+ end
179
+ end
180
+
181
+ if Sidekiq::VERSION.to_i == 4
182
+ # Convert string to machine readable format
183
+ class Processor
184
+ def log_context(job_hash)
185
+ klass = job_hash["wrapped"] || job_hash["class"]
186
+ event = { class: klass, jid: job_hash["jid"] }
187
+ event[:bid] = job_hash["bid"] if job_hash["bid"]
188
+ event
189
+ end
190
+ end
191
+
192
+ # Let Semantic Logger handle duration logging
193
+ module Middleware
194
+ module Server
195
+ class Logging
196
+ def call(worker, item, queue)
197
+ worker.logger.info("Start #perform")
198
+ worker.logger.measure_info(
199
+ "Completed #perform",
200
+ on_exception_level: :error,
201
+ log_exception: :full,
202
+ metric: "Sidekiq/#{worker.class.name}/perform"
203
+ ) do
204
+ yield
205
+ end
206
+ end
207
+ end
208
+ end
209
+ end
210
+ end
211
+ end
@@ -37,7 +37,7 @@ module RailsSemanticLogger
37
37
  def call_app(request, env)
38
38
  instrumenter = ActiveSupport::Notifications.instrumenter
39
39
  instrumenter_state = instrumenter.start "request.action_dispatch", request: request
40
- instrumenter_finish = -> () {
40
+ instrumenter_finish = lambda {
41
41
  instrumenter.finish_with_state(instrumenter_state, "request.action_dispatch", request: request)
42
42
  }
43
43
 
@@ -1,3 +1,3 @@
1
1
  module RailsSemanticLogger
2
- VERSION = "4.13.0".freeze
2
+ VERSION = "4.15.0".freeze
3
3
  end
@@ -6,21 +6,27 @@ module RailsSemanticLogger
6
6
  module ActionController
7
7
  autoload :LogSubscriber, "rails_semantic_logger/action_controller/log_subscriber"
8
8
  end
9
+
9
10
  module ActionMailer
10
11
  autoload :LogSubscriber, "rails_semantic_logger/action_mailer/log_subscriber"
11
12
  end
13
+
12
14
  module ActionView
13
15
  autoload :LogSubscriber, "rails_semantic_logger/action_view/log_subscriber"
14
16
  end
17
+
15
18
  module ActiveJob
16
19
  autoload :LogSubscriber, "rails_semantic_logger/active_job/log_subscriber"
17
20
  end
21
+
18
22
  module ActiveRecord
19
23
  autoload :LogSubscriber, "rails_semantic_logger/active_record/log_subscriber"
20
24
  end
25
+
21
26
  module Rack
22
27
  autoload :Logger, "rails_semantic_logger/rack/logger"
23
28
  end
29
+
24
30
  module DelayedJob
25
31
  autoload :Plugin, "rails_semantic_logger/delayed_job/plugin"
26
32
  end
@@ -48,9 +54,11 @@ module RailsSemanticLogger
48
54
  end
49
55
 
50
56
  def self.subscriber_patterns(subscriber)
51
- subscriber.patterns.respond_to?(:keys) ?
52
- subscriber.patterns.keys :
57
+ if subscriber.patterns.respond_to?(:keys)
58
+ subscriber.patterns.keys
59
+ else
53
60
  subscriber.patterns
61
+ end
54
62
  end
55
63
 
56
64
  private_class_method :subscriber_patterns, :unattach
@@ -59,4 +67,14 @@ end
59
67
  require("rails_semantic_logger/extensions/mongoid/config") if defined?(Mongoid)
60
68
  require("rails_semantic_logger/extensions/active_support/logger") if defined?(ActiveSupport::Logger)
61
69
  require("rails_semantic_logger/extensions/active_support/log_subscriber") if defined?(ActiveSupport::LogSubscriber)
62
- require("rails_semantic_logger/extensions/rack/server") if defined?(Rack::Server)
70
+
71
+ begin
72
+ require 'rackup'
73
+ rescue LoadError
74
+ # No need to do anything, will fall back to Rack
75
+ end
76
+ if defined?(Rackup::Server)
77
+ require("rails_semantic_logger/extensions/rackup/server")
78
+ elsif defined?(Rack::Server)
79
+ require("rails_semantic_logger/extensions/rack/server")
80
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_semantic_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.13.0
4
+ version: 4.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-09 00:00:00.000000000 Z
11
+ date: 2024-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -80,7 +80,9 @@ files:
80
80
  - lib/rails_semantic_logger/extensions/active_support/tagged_logging.rb
81
81
  - lib/rails_semantic_logger/extensions/mongoid/config.rb
82
82
  - lib/rails_semantic_logger/extensions/rack/server.rb
83
+ - lib/rails_semantic_logger/extensions/rackup/server.rb
83
84
  - lib/rails_semantic_logger/extensions/rails/server.rb
85
+ - lib/rails_semantic_logger/extensions/sidekiq/sidekiq.rb
84
86
  - lib/rails_semantic_logger/options.rb
85
87
  - lib/rails_semantic_logger/rack/logger.rb
86
88
  - lib/rails_semantic_logger/version.rb
@@ -90,7 +92,7 @@ licenses:
90
92
  metadata:
91
93
  bug_tracker_uri: https://github.com/reidmorrison/rails_semantic_logger/issues
92
94
  documentation_uri: https://logger.rocketjob.io
93
- source_code_uri: https://github.com/reidmorrison/rails_semantic_logger/tree/v4.13.0
95
+ source_code_uri: https://github.com/reidmorrison/rails_semantic_logger/tree/v4.15.0
94
96
  rubygems_mfa_required: 'true'
95
97
  post_install_message:
96
98
  rdoc_options: []
@@ -107,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
109
  - !ruby/object:Gem::Version
108
110
  version: '0'
109
111
  requirements: []
110
- rubygems_version: 3.4.9
112
+ rubygems_version: 3.5.3
111
113
  signing_key:
112
114
  specification_version: 4
113
115
  summary: Feature rich logging framework that replaces the Rails logger.