class KuberKit::Tools::LoggerFactory

Constants

MAX_LOGS_TO_KEEP
MAX_LOG_FILE_SIZE
SEVERITY_COLORS_BY_LEVEL

Public Instance Methods

create(level: nil) click to toggle source
# File lib/kuber_kit/tools/logger_factory.rb, line 20
def create(level: nil)
  prepare_log_file(configs.log_file_path)
  
  logger = Logger.new(configs.log_file_path, MAX_LOGS_TO_KEEP, MAX_LOG_FILE_SIZE)

  logger.level = level || Logger::DEBUG

  logger.formatter = proc do |severity, datetime, progname, msg|
    level = Logger::SEV_LABEL.index(severity)

    severity_color = SEVERITY_COLORS_BY_LEVEL[level]

    severity_text  = severity.to_s
    severity_text  = severity_text.colorize(severity_color) if severity_color

    if level == Logger::DEBUG
      "#{datetime.strftime("%Y/%m/%d %H:%M:%S").grey} #{msg}\n"
    else
      "#{datetime.strftime("%Y/%m/%d %H:%M:%S").grey} #{severity_text.downcase}: #{msg}\n"
    end
  end

  logger
end

Private Instance Methods

prepare_log_file(file_path) click to toggle source
# File lib/kuber_kit/tools/logger_factory.rb, line 46
def prepare_log_file(file_path)
  dir_path = File.dirname(file_path)
  unless Dir.exists?(dir_path)
    FileUtils.mkdir_p(dir_path)
  end
  FileUtils.touch(file_path)
end