class Insights::Loggers::Factory

Constants

EXTENDED_LIBRARY_FROM_MODULE

Public Class Methods

create_logger(logger_class, args = nil) click to toggle source
# File lib/insights/loggers/factory.rb, line 4
def self.create_logger(logger_class, args = nil)
  logger_library_loader(logger_class, args)
  klass = logger_class.safe_constantize

  if klass
    logger_builder(klass, args)
  else
    raise ArgumentError, "Unable to load logger class #{logger_class}"
  end
end

Private Class Methods

logger_builder(klass, args) click to toggle source
# File lib/insights/loggers/factory.rb, line 15
                     def self.logger_builder(klass, args)
  logger = if args.is_a?(Hash) && args[:log_path]
             klass.new(args[:log_path]) # for ManageIQ::Loggers::Base
           else
             klass.new
           end

  if args && args[:app_name] && logger.respond_to?(:app_name_for_formatter)
    logger.app_name_for_formatter(args[:app_name])
  end

  if args && args[:extend_module]
    logger.extend(args[:extend_module].safe_constantize)
  end

  logger
end
logger_library_loader(logger_class, args = nil) click to toggle source
# File lib/insights/loggers/factory.rb, line 37
                     def self.logger_library_loader(logger_class, args = nil)
  case logger_class
  when "ManageIQ::Loggers::Base"
    require "manageiq/loggers/base"
  when "ManageIQ::Loggers::Container"
    require "manageiq/loggers/base"
    require "manageiq/loggers/container"
  when "ManageIQ::Loggers::CloudWatch"
    require "manageiq/loggers/base"
    require "manageiq/loggers/container"
    require "manageiq/loggers/cloud_watch"
  when "ManageIQ::Loggers::Journald"
    unless RbConfig::CONFIG['host_os'] =~ /linux/i
      raise RuntimeError, "Logger #{logger_class} is not supported for #{RbConfig::CONFIG['host_os']}"
    end

    require "manageiq/loggers/base"
    require "manageiq/loggers/journald"
  when "Insights::Loggers::StdErrorLogger"
    require "manageiq/loggers/base"
    require "manageiq/loggers/container"
    require "insights/loggers/container"
    require "insights/loggers/std_error_logger"
    if args && args[:extend_module]
      library_path = EXTENDED_LIBRARY_FROM_MODULE[args[:extend_module]]
      raise ArgumentError, "Unable to find library for #{args[:extend_module]}" unless library_path

      require EXTENDED_LIBRARY_FROM_MODULE[args[:extend_module]]
    end
  when "Insights::Loggers::CloudWatch"
    require "manageiq/loggers/base"
    require "manageiq/loggers/container"
    require "insights/loggers/container"
    require "insights/loggers/cloud_watch"
  when "TopologicalInventory::Providers::Common::Logger"
    require "topological_inventory/providers/common/logging"
  when "Insights::Loggers::Container"
    require "manageiq/loggers/base"
    require "manageiq/loggers/container"
    require "insights/loggers/container"
  else
    raise ArgumentError, "Can't load libraries for #{logger_class}."
  end
end