module Chef::EventLoggers

def self.available_event_loggers

def self.available_event_loggers
  event_loggers_by_name.select do |key, val|
    val.available?
  end.keys
end

def self.by_name(name)

def self.by_name(name)
  event_loggers_by_name[name]
end

def self.event_loggers_by_name

def self.event_loggers_by_name
  @event_loggers_by_name ||= {}
end

def self.new(name)

def self.new(name)
  event_logger_class = by_name(name.to_s)
  raise UnknownEventLogger, "No event logger found for #{name} (available: #{available_event_loggers.join(", ")})" unless event_logger_class
  raise UnavailableEventLogger unless available_event_loggers.include? name.to_s
  event_logger_class.new
end

def self.register(name, logger)

def self.register(name, logger)
  event_loggers_by_name[name.to_s] = logger
end