@@ -11,7 +11,7 @@ class << self
1111 end
1212
1313 def initialize ( logger : nil )
14- @logger = logger || Logger . new ( Rails . env . production? ? '/proc/self/fd/1' : $stdout)
14+ @logger = create_logger_adapter ( logger || Logger . new ( Rails . env . production? ? '/proc/self/fd/1' : $stdout) )
1515 @threads = [ ]
1616 @running = true
1717 @shutdown_requested = false
@@ -61,7 +61,7 @@ def start(kill_to_restart_on_standard_error: false)
6161 def request_shutdown
6262 # Workaround to a known issue with Signal Traps and logs
6363 Thread . start do
64- logger . log 'Shutting down Rabbit Carrots service...'
64+ logger . error 'Shutting down Rabbit Carrots service...'
6565 end
6666 @shutdown_requested = true
6767 @threads . each ( &:kill )
@@ -71,7 +71,7 @@ def request_shutdown
7171 def stop
7272 # Workaround to a known issue with Signal Traps and logs
7373 Thread . start do
74- logger . log 'Stoppig the Rabbit Carrots service...'
74+ logger . error 'Stoppig the Rabbit Carrots service...'
7575 end
7676 @running = false
7777 end
@@ -80,32 +80,32 @@ def run_task(queue_name:, handler_class:, routing_keys:, queue_arguments: {}, ki
8080 RabbitCarrots ::Connection . instance . channel . with do |channel |
8181 exchange = channel . topic ( RabbitCarrots . configuration . rabbitmq_exchange_name , durable : true )
8282
83- logger . log "Listening on QUEUE: #{ queue_name } for ROUTING KEYS: #{ routing_keys } "
83+ logger . info "Listening on QUEUE: #{ queue_name } for ROUTING KEYS: #{ routing_keys } "
8484 queue = channel . queue ( queue_name , durable : true , arguments : queue_arguments )
8585
8686 routing_keys . map ( &:strip ) . each { |k | queue . bind ( exchange , routing_key : k ) }
8787
8888 queue . subscribe ( block : false , manual_ack : true , prefetch : 10 ) do |delivery_info , properties , payload |
8989 break if @shutdown_requested
9090
91- logger . log "Received from queue: #{ queue_name } , Routing Keys: #{ routing_keys } "
91+ logger . info "Received from queue: #{ queue_name } , Routing Keys: #{ routing_keys } "
9292 handler_class . handle! ( channel , delivery_info , properties , payload )
9393 channel . ack ( delivery_info . delivery_tag , false )
9494 rescue RabbitCarrots ::EventHandlers ::Errors ::NackMessage , JSON ::ParserError => _e
95- logger . log "Nacked message: #{ payload } "
95+ logger . warn "Nacked message: #{ payload } "
9696 channel . nack ( delivery_info . delivery_tag , false , false )
9797 rescue RabbitCarrots ::EventHandlers ::Errors ::NackAndRequeueMessage => _e
98- logger . log "Nacked and Requeued message: #{ payload } "
98+ logger . warn "Nacked and Requeued message: #{ payload } "
9999 channel . nack ( delivery_info . delivery_tag , false , true )
100100 rescue self . class . database_agnostic_not_null_violation , self . class . database_agnostic_record_invalid => e
101- logger . log "Null constraint or Invalid violation: #{ payload } . Error: #{ e . message } "
101+ logger . warn "Null constraint or Invalid violation: #{ payload } . Error: #{ e . message } "
102102 channel . ack ( delivery_info . delivery_tag , false )
103103 rescue self . class . database_agnostic_connection_not_established => e
104- logger . log "Error connection not established to the database: #{ payload } . Error: #{ e . message } "
104+ logger . warn "Error connection not established to the database: #{ payload } . Error: #{ e . message } "
105105 sleep 3
106106 channel . nack ( delivery_info . delivery_tag , false , true )
107107 rescue StandardError => e
108- logger . log "Error handling message: #{ payload } . Error: #{ e . message } "
108+ logger . error "Error handling message: #{ payload } . Error: #{ e . message } "
109109 sleep 3
110110 channel . nack ( delivery_info . delivery_tag , false , true )
111111 Process . kill ( 'SIGTERM' , Process . pid ) if kill_to_restart_on_standard_error
@@ -115,5 +115,24 @@ def run_task(queue_name:, handler_class:, routing_keys:, queue_arguments: {}, ki
115115 logger . error "Bunny session error: #{ e . message } "
116116 request_shutdown
117117 end
118+
119+ private
120+
121+ def create_logger_adapter ( logger )
122+ return logger if logger . respond_to? ( :info ) && logger . respond_to? ( :error ) && logger . respond_to? ( :warn )
123+
124+ adapter = Object . new
125+ def adapter . info ( msg )
126+ @logger . write ( "[INFO] #{ msg } \n " )
127+ end
128+ def adapter . error ( msg )
129+ @logger . write ( "[ERROR] #{ msg } \n " )
130+ end
131+ def adapter . warn ( msg )
132+ @logger . write ( "[WARN] #{ msg } \n " )
133+ end
134+ adapter . instance_variable_set ( :@logger , logger )
135+ adapter
136+ end
118137 end
119138end
0 commit comments