lib/klogger.rb in klogger-1.0.0 vs lib/klogger.rb in klogger-1.0.1
- old
+ new
@@ -2,57 +2,87 @@
require 'psych'
require 'killbill'
require 'klogger/base'
+require 'klogger/email'
require 'klogger/irc'
require 'klogger/syslog'
MODULES = {
:irc => Klogger::IRC,
- :syslog => Klogger::Syslog
+ :syslog => Klogger::Syslog,
+ :email => Klogger::Email
}
-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 initialize(*args)
+ super(*args)
+ @enabled_modules = []
+ end
+
def start_plugin
- ENABLED_MODULES.each { |m| m.start_plugin rescue nil }
+ configure_modules
+ @enabled_modules.each do |m|
+ begin
+ m.start_plugin
+ rescue => e
+ @logger.warn "Unable to start module #{m.class}: #{e.message}"
+ end
+ end
+
super
+
+ @logger.info "Klogger::KloggerPlugin started"
end
def on_event(event)
- ENABLED_MODULES.each { |m| m.on_event(event) rescue nil }
+ @enabled_modules.each do |m|
+ begin
+ m.on_event(event)
+ rescue => e
+ @logger.warn "Unable to send event to module #{m.class}: #{e.message}"
+ end
+ end
end
def stop_plugin
super
- ENABLED_MODULES.each { |m| m.stop_plugin rescue nil }
+
+ @enabled_modules.each do |m|
+ begin
+ m.stop_plugin
+ rescue => e
+ @logger.warn "Unable to stop module #{m.class}: #{e.message}"
+ end
+ end
+
+ @logger.info "Klogger::KloggerPlugin stopped"
end
+ private
+
+ def configure_modules
+ # Parse the config file
+ begin
+ @config = Psych.load_file("#{@conf_dir}/klogger.yml")
+ rescue Errno::ENOENT
+ @logger.warn "Unable to find the config file #{@conf_dir}/klogger.yml"
+ return
+ end
+
+ # Instantiate each module
+ @config.each do |kmodule, config|
+ next unless config[:enabled]
+
+ module_klass = MODULES[kmodule.to_sym]
+ next unless module_klass
+
+ @logger.info "Module #{module_klass} enabled"
+ @enabled_modules << module_klass.send('new', config, @logger)
+ end
+ end
end
end