@@ -9,14 +9,9 @@ module Resque
99 # It also ensures workers are always listening to signals from you,
1010 # their master, and can react accordingly.
1111 class Worker
12+ extend Resque ::Helpers
1213 include Resque ::Helpers
13- extend Resque ::Helpers
14-
15- # Whether the worker should log basic info to STDOUT
16- attr_accessor :verbose
17-
18- # Whether the worker should log lots of info to STDOUT
19- attr_accessor :very_verbose
14+ include Resque ::Logging
2015
2116 # Boolean indicating whether this worker can or can not fork.
2217 # Automatically set if a fork(2) fails.
@@ -241,6 +236,24 @@ def reconnect
241236 end
242237 end
243238
239+ # Reconnect to Redis to avoid sharing a connection with the parent,
240+ # retry up to 3 times with increasing delay before giving up.
241+ def reconnect
242+ tries = 0
243+ begin
244+ redis . client . reconnect
245+ rescue Redis ::BaseConnectionError
246+ if ( tries += 1 ) <= 3
247+ log "Error reconnecting to Redis; retrying"
248+ sleep ( tries )
249+ retry
250+ else
251+ log "Error reconnecting to Redis; quitting"
252+ raise
253+ end
254+ end
255+ end
256+
244257 # Returns a list of queues to use when searching for a job.
245258 # A splat ("*") means you want every queue (in alpha order) - this
246259 # can be useful for dynamically adding new queues. Low priority queues
@@ -612,17 +625,62 @@ def procline(string)
612625 log! $0
613626 end
614627
615- # Log a message to STDOUT if we are verbose or very_verbose.
628+ # Log a message to Resque.logger
629+ # can't use alias_method since info/debug are private methods
616630 def log ( message )
617- if verbose || very_verbose
618- time = Time . now . strftime ( '%H:%M:%S %Y-%m-%d' )
619- puts "[#{ time } ] #$$: #{ message } "
620- end
631+ info ( message )
621632 end
622633
623- # Logs a very verbose message to STDOUT.
624634 def log! ( message )
625- log message if very_verbose
635+ debug ( message )
636+ end
637+
638+ # Deprecated legacy methods for controlling the logging threshhold
639+ # Use Resque.logger.level now, e.g.:
640+ #
641+ # Resque.logger.level = Logger::DEBUG
642+ #
643+ def verbose
644+ logger_severity_deprecation_warning
645+ @verbose
646+ end
647+
648+ def very_verbose
649+ logger_severity_deprecation_warning
650+ @very_verbose
651+ end
652+
653+ def verbose = ( value ) ;
654+ logger_severity_deprecation_warning
655+
656+ if value && !very_verbose
657+ Resque . logger . formatter = VerboseFormatter . new
658+ elsif !value
659+ Resque . logger . formatter = QuietFormatter . new
660+ end
661+
662+ @verbose = value
663+ end
664+
665+ def very_verbose = ( value )
666+ logger_severity_deprecation_warning
667+ if value
668+ Resque . logger . formatter = VeryVerboseFormatter . new
669+ elsif !value && verbose
670+ Resque . logger . formatter = VerboseFormatter . new
671+ else
672+ Resque . logger . formatter = QuietFormatter . new
673+ end
674+
675+ @very_verbose = value
676+ end
677+
678+ def logger_severity_deprecation_warning
679+ return if $warned_logger_severity_deprecation
680+ Kernel . warn "*** DEPRECATION WARNING: Resque::Worker#verbose and #very_verbose are deprecated. Please set Resque.logger.level instead"
681+ Kernel . warn "Called from: #{ caller [ 0 ..5 ] . join ( "\n \t " ) } "
682+ $warned_logger_severity_deprecation = true
683+ nil
626684 end
627685 end
628686end
0 commit comments