class RocketJob::Subscribers::Logger
Attributes
host_name[W]
Public Class Methods
host_name()
click to toggle source
# File lib/rocket_job/subscribers/logger.rb, line 8 def self.host_name @host_name ||= Socket.gethostname end
Public Instance Methods
set(level: :info, class_name: nil, host_name: nil, pid: nil)
click to toggle source
Change the log level
Examples:
# Change the global log level to :trace on all servers. RocketJob::Subscribers::Logger.publish(:set, level: :trace) # Change the global log level to :trace on one server. RocketJob::Subscribers::Logger.publish(:set, level: :trace, host_name: 'server1.company.com') # Change the global log level to :trace for a specific process id. RocketJob::Subscribers::Logger.publish(:set, level: :trace, host_name: 'server1.company.com', pid: 34567) # Change the log level for a specific class to :trace. RocketJob::Subscribers::Logger.publish(:set, level: :trace, class_name: 'RocketJob::Supervisor')
# File lib/rocket_job/subscribers/logger.rb, line 30 def set(level: :info, class_name: nil, host_name: nil, pid: nil) return unless for_me?(host_name, pid) if class_name class_name.constantize.logger.level = level logger.info "Changed log level to #{level} for #{class_name}" else SemanticLogger.default_level = level logger.info "Changed global log level to #{level}" end end
thread_dump(host_name: nil, pid: nil)
click to toggle source
Dump all backtraces to the log file.
Examples:
# Thread dump on all servers: RocketJob::Subscribers::Logger.publish(:thread_dump) # Change the global log level to :trace on one server. RocketJob::Subscribers::Logger.publish(:thread_dump, host_name: 'server1.company.com') # Change the global log level to :trace for a specific process id. RocketJob::Subscribers::Logger.publish(:thread_dump, host_name: 'server1.company.com', pid: 34567)
# File lib/rocket_job/subscribers/logger.rb, line 53 def thread_dump(host_name: nil, pid: nil) return unless for_me?(host_name, pid) Thread.list.each do |thread| next if thread == Thread.current logger.backtrace(thread: thread) end end
Private Instance Methods
for_me?(host_name, pid)
click to toggle source
# File lib/rocket_job/subscribers/logger.rb, line 65 def for_me?(host_name, pid) return true if host_name.nil? && pid.nil? return false if host_name && (host_name != self.class.host_name) return false if pid && (pid != $$) true end