class ErrorHandler::EH
Constants
- DEBUG
- ERROR
- EX_BASE
- EX_CANTCREAT
- EX_CONFIG
- EX_DATAERR
- EX_GENERAL
- EX_IOERR
- EX_NOHOST
- EX_NOINPUT
- EX_NOPERM
- EX_NOUSER
- EX_OK
- EX_OSERR
- EX_OSFILE
- EX_PROTOCOL
- EX_SOFTWARE
- EX_TEMPFAIL
- EX_UNAVAILABLE
- EX_USAGE
- FATAL
- INFO
- WARN
Private Class Methods
construct_args(opts)
click to toggle source
# File lib/eh/eh.rb, line 122 def self.construct_args(opts) return nil if opts.nil? return nil if opts[:args].nil? opts[:args].join(' ') end
generate_log_id()
click to toggle source
# File lib/eh/eh.rb, line 105 def self.generate_log_id ms = Time.now end
handle(handlers, e, msg)
click to toggle source
# File lib/eh/eh.rb, line 111 def self.handle(handlers, e, msg) return if handlers.nil? if handlers.is_a? Array handlers.each do |handler| handler.handle(e, msg) if not handler.nil? end else handlers.handle(e, msg) end end
log(facilities, msg, msg_type)
click to toggle source
# File lib/eh/eh.rb, line 97 def self.log(facilities, msg, msg_type) if facilities.is_a? Array EH::log_multiple_loggers(facilities, msg, msg_type) else EH::log_single_logger(facilities, msg, msg_type) end end
log_level(opts)
click to toggle source
# File lib/eh/eh.rb, line 163 def self.log_level(opts) opts[:level] || EH::ERROR end
log_multiple_loggers(loggers, msg, msg_type)
click to toggle source
# File lib/eh/eh.rb, line 152 def self.log_multiple_loggers(loggers, msg, msg_type) loggers.each do |logger| next if logger.nil? logger.warn msg if msg_type == WARN logger.debug msg if msg_type == DEBUG logger.error msg if msg_type == ERROR logger.info msg if msg_type == INFO logger.fatal msg if msg_type == FATAL end end
log_single_logger(logger, msg, msg_type)
click to toggle source
# File lib/eh/eh.rb, line 144 def self.log_single_logger(logger, msg, msg_type) if logger.nil? warn msg_type + ': ' + msg else self.log([logger], msg, msg_type) end end
report_unhandled(logfile = nil, handlers = nil)
click to toggle source
# File lib/eh/eh.rb, line 28 def self.report_unhandled(logfile = nil, handlers = nil) if $! message = "Unhandled exception: #{$!}" warn message if not logfile.nil? open(logfile, 'a') { |f| f.puts message } end handle(handlers, $!, message) if not handlers.nil? end end
retry(options, &block)
click to toggle source
# File lib/eh/eh.rb, line 55 def self.retry(options, &block) opts = options || {} begin EH::retry_with_raise(opts, block) return true rescue => e msg = "#{opts[:message]}: #{e.message}" if not opts[:logger].nil? EH::log(opts[:logger], msg, EH::log_level(opts)) if opts[:exception_filter].nil? or opts[:exception_filter].include? e.class end EH::handle(opts[:handlers], e, msg) if not opts[:handlers].nil? return false end end
retry!(options, &block)
click to toggle source
# File lib/eh/eh.rb, line 42 def self.retry!(options, &block) opts = options || {} EH::retry_with_raise(opts, block) rescue => e raise e if opts.nil? == false and opts[:exception_filter] and not opts[:exception_filter].include? e.class msg = "#{opts[:message]}: #{e.message}" EH::log(opts[:logger], msg, EH::log_level(opts)) if opts.nil? == false and not opts[:logger].nil? and not opts[:message].nil? EH::handle(opts[:handlers], e, msg) if not opts[:handlers].nil? raise e end
retry_with_raise(opts, block)
click to toggle source
# File lib/eh/eh.rb, line 128 def self.retry_with_raise(opts, block) retry_threshold = opts[:threshold] || 3 delay = opts[:delay] || 0.2 attempts = 0 begin block.call(EH::construct_args(opts)) rescue => e raise e if opts[:exception_filter] and not opts[:exception_filter].include? e.class attempts += 1 sleep delay retry if attempts < retry_threshold raise e end end
run(options, &block)
click to toggle source
# File lib/eh/eh.rb, line 85 def self.run(options, &block) opts = options || {} block.call(EH::construct_args(opts)) rescue => e msg = "#{opts[:message]}: #{e.message}" if not opts[:logger].nil? EH::log(opts[:logger], msg, EH::log_level(opts)) if opts[:exception_filter].nil? or opts[:exception_filter].include? e.class end EH::handle(opts[:handlers], e, msg) if not opts[:handlers].nil? end
run!(options, &block)
click to toggle source
# File lib/eh/eh.rb, line 70 def self.run!(options, &block) opts = options || {} block.call(EH::construct_args(opts)) rescue => e msg = "#{opts[:message]}: #{e.message}" if not opts[:logger].nil? EH::log(opts[:logger], msg, EH::log_level(opts)) if opts[:exception_filter].nil? or opts[:exception_filter].include? e.class end EH::handle(opts[:handlers], e, msg) if not opts[:handlers].nil? raise e if opts.nil? == false and opts[:exception_filter] and not opts[:exception_filter].include? e.class raise e if opts.nil? == true or opts[:exception_filter].nil? == true or opts[:exception_filter] == [] end