Module: LogStruct::Integrations::Sidekiq
- Extended by:
- IntegrationInterface, T::Sig
- Defined in:
- lib/log_struct/integrations/sidekiq.rb,
lib/log_struct/integrations/sidekiq/logger.rb,
lib/log_struct/integrations/sidekiq/job_context_middleware.rb
Overview
Sidekiq integration for structured logging
Defined Under Namespace
Classes: JobContextMiddleware, Logger
Constant Summary collapse
- JOB_ERROR_HANDLER =
T.let( ->(error, context, _config = nil) { log_job_error(error, context) }, T.proc.params(error: Exception, context: T::Hash[T.untyped, T.untyped], config: T.untyped).void )
Class Method Summary collapse
-
.configure_logger ⇒ void
Use LogStruct's logger for Sidekiq's own lines.
-
.restore_logger ⇒ void
Put Sidekiq's own logger back, when an initializer turned LogStruct or this integration off after configure_logger ran.
-
.setup(config) ⇒ Boolean?
Set up Sidekiq structured logging.
-
.tid ⇒ String
Get thread ID for Sidekiq logging.
Methods included from IntegrationInterface
Class Method Details
.configure_logger ⇒ void
This method returns an undefined value.
Use LogStruct's logger for Sidekiq's own lines. The Railtie calls this as soon as it replaces Rails.logger, before config/initializers run, because an initializer that configures Sidekiq (connecting to Redis, setting up a fetcher) logs with Sidekiq's logger straight away.
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/log_struct/integrations/sidekiq.rb', line 48 def self.configure_logger return unless defined?(::Sidekiq) current = sidekiq_logger_config.logger return if current.is_a?(LogStruct::Integrations::Sidekiq::Logger) @original_logger = current name = ::Sidekiq.server? ? "Sidekiq-Server" : "Sidekiq-Client" sidekiq_logger_config.logger = LogStruct::Integrations::Sidekiq::Logger.new(name) end |
.restore_logger ⇒ void
This method returns an undefined value.
Put Sidekiq's own logger back, when an initializer turned LogStruct or this integration off after configure_logger ran
62 63 64 65 66 67 68 |
# File 'lib/log_struct/integrations/sidekiq.rb', line 62 def self.restore_logger return unless defined?(::Sidekiq) return if @original_logger.nil? sidekiq_logger_config.logger = @original_logger @original_logger = nil end |
.setup(config) ⇒ Boolean?
Set up Sidekiq structured logging
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/log_struct/integrations/sidekiq.rb', line 25 def self.setup(config) return nil unless defined?(::Sidekiq) return nil unless config.enabled return nil unless config.integrations.enable_sidekiq configure_logger ::Sidekiq.configure_server do |sidekiq_config| # First in the chain, so lines logged by other middleware include the job too sidekiq_config.server_middleware do |chain| chain.prepend LogStruct::Integrations::Sidekiq::JobContextMiddleware end replace_default_error_handler(sidekiq_config) end true end |
.tid ⇒ String
Get thread ID for Sidekiq logging
15 16 17 |
# File 'lib/log_struct/integrations/sidekiq/logger.rb', line 15 def self.tid Thread.current["sidekiq_tid"] ||= (Thread.current.object_id ^ ::Process.pid).to_s(36) end |