Sha256: b543e6b34e3e4bb8df837cb8c90ecbda80b469f9be443db49b9efb060ab818cd

Contents?: true

Size: 803 Bytes

Versions: 11

Compression:

Stored size: 803 Bytes

Contents

module Eye::Process::Notify

  # notify to user:
  # 1) process crashed by itself, and we restart it [:info]
  # 2) checker bounded to restart process [:warn]
  # 3) flapping + switch to unmonitored [:error]

  LEVELS = { debug: 0, info: 1, warn: 2, error: 3, fatal: 4 }.freeze

  def notify(level, msg)
    # logging it
    error "NOTIFY: #{msg}" if ilevel(level) > ilevel(:info)

    return if self[:notify].blank?

    # send notifies
    message = { message: msg, name: name,
                full_name: full_name, pid: pid, host: Eye::Local.host, level: level,
                at: Time.now }

    self[:notify].each do |contact, not_level|
      Eye::Notify.notify(contact, message) if ilevel(level) >= ilevel(not_level)
    end
  end

private

  def ilevel(level)
    LEVELS[level].to_i
  end

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
eye-0.10.1.pre lib/eye/process/notify.rb
eye-0.10.0 lib/eye/process/notify.rb
eye-0.10.0.alpha2 lib/eye/process/notify.rb
eye-0.10.0.alpha lib/eye/process/notify.rb
eye-0.9.4.nosigar lib/eye/process/notify.rb
eye-0.9.4 lib/eye/process/notify.rb
eye-0.9.3 lib/eye/process/notify.rb
eye-0.9.2.nosigar lib/eye/process/notify.rb
eye-0.9.2 lib/eye/process/notify.rb
eye-0.9.1 lib/eye/process/notify.rb
eye-0.9.pre lib/eye/process/notify.rb