The
ActiveSupport::BroadcastLogger
Show archive.org snapshot
allows you to log to multiple sinks. You know this behavior from from the rails server
command, that both logs to standard out and the log/development.log
file.
Here is an example from the ActiveSupport::BroadcastLogger
API:
stdout_logger = ActiveSupport::Logger.new(STDOUT)
file_logger = ActiveSupport::Logger.new("development.log")
broadcast = ActiveSupport::BroadcastLogger.new(stdout_logger, file_logger)
broadcast.info("Hello world!") # Writes the log to STDOUT and the development.log file.
Here is an example for Sidekiq:
Sidekiq.configure_client do |config|
if ENV['RAILS_ENV'] == 'development' || ENV['RAILS_ENV'] == 'test'
stdout_logger = ActiveSupport::Logger.new(STDOUT)
file_logger = ActiveSupport::Logger.new("log/sidekiq_#{ENV['RAILS_ENV']}.log")
broadcast = ActiveSupport::BroadcastLogger.new(stdout_logger, file_logger)
broadcast.level = Logger::INFO
config.logger = broadcast
end
end
Sidekiq.configure_server do |config|
if ENV['RAILS_ENV'] == 'development' || ENV['RAILS_ENV'] == 'test'
stdout_logger = ActiveSupport::Logger.new(STDOUT)
file_logger = ActiveSupport::Logger.new("log/sidekiq_#{ENV['RAILS_ENV']}.log")
broadcast = ActiveSupport::BroadcastLogger.new(stdout_logger, file_logger)
broadcast.level = Logger::INFO
config.logger = broadcast
end
end
Legacy note
In previous versions of ActiveSupport
the code for the examples above would have looked like this.
stdout_logger = ActiveSupport::Logger.new(STDOUT)
file_logger = ActiveSupport::Logger.new("development.log")
broadcast = stdout_logger.extend(ActiveSupport::Logger.broadcast(file_logger))
broadcast.info("Hello world!") # Writes the log to STDOUT and the development.log file.
Posted by Emanuel to makandra dev (2024-10-14 08:23)