Sha256: ca9964a06426a0ae82b0cffc9b8062182024960723556bc173112ed46c63631d

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

require 'logger'
require 'psych'

require 'killbill'

require 'klogger/base'
require 'klogger/irc'
require 'klogger/syslog'

MODULES = {
            :irc => Klogger::IRC,
            :syslog => Klogger::Syslog
          }

ENABLED_MODULES = []

LOG = Logger.new(STDOUT)
LOG.level = Logger::INFO

# Parse the config file
begin
  CONFIG = Psych.load_file('klogger.yml')
rescue Errno::ENOENT
  LOG.warn 'Unable to find the config file klogger.yml'
  CONFIG = {}
end

# Instantiate each module
CONFIG.each do |kmodule, config|
  next unless config['enabled']

  module_klass = MODULES[kmodule.to_sym]
  next unless module_klass

  LOG.info "Module #{module_klass} enabled"
  ENABLED_MODULES << module_klass.send('new', config)
end

# Killbill plugin, which dispatches to all klogger modules
module Klogger
  class KloggerPlugin < Killbill::Plugin::Notification

    def start_plugin
      ENABLED_MODULES.each { |m| m.start_plugin rescue nil }
      super
    end

    def on_event(event)
      ENABLED_MODULES.each { |m| m.on_event(event) rescue nil }
    end

    def stop_plugin
      super
      ENABLED_MODULES.each { |m| m.stop_plugin rescue nil }
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
klogger-1.0.0 lib/klogger.rb