Sha256: 19186d3f3d55aa3adeb7b26439c6d593eb353e706886d662c1284238b02fe57b

Contents?: true

Size: 1.88 KB

Versions: 2

Compression:

Stored size: 1.88 KB

Contents

# frozen_string_literal: true

module Cryptum
  # This plugin is used to instantiate a Cryptum logger with a custom message format
  module Log
    # Supported Method Parameters::
    # Cryptum::Log.create(
    # )
    public_class_method def self.append(opts = {})
      # Leave 10 "old" log files where
      # each file is ~ 1,024,000 bytes
      log_file = File.open('/tmp/cryptum.log', 'a')
      logger = Logger.new(
        log_file,
        10,
        1_024_000
      )
      level = opts[:level].to_s.downcase.to_sym
      msg = opts[:msg]
      which_self = opts[:which_self].to_s
      event_history = opts[:event_history]

      exit_gracefully = false

      case level
      when :debug
        logger.level = Logger::DEBUG
      when :error
        logger.level = Logger::ERROR
        exit_gracefully = true
      when :fatal
        # This is reserved for:
        # Cryptum::UI::Exit
        # module(s) if StandardError is triggered.
        # This ensures we're not infintely attempting
        # to log to file and exit.
        logger.level = Logger::FATAL
      when :unknown
        logger.level = Logger::UNKNOWN
      when :warn
        logger.level = Logger::WARN
      when :info
        logger.level = Logger::INFO
      else
        raise "ERROR: Invalid log level. Valid options are:\n:info\n:warn\n:unknown\n:fatal\n:error\n:debug"
      end

      logger.datetime_format = '%Y-%m-%d %H:%M:%S.%N'
      if msg.instance_of?(Interrupt)
        logger.add(logger.level, 'CTRL+C Detected...Ended Session.', which_self)
      else
        logger.add(logger.level, msg, which_self)
      end

      Cryptum::UI::Exit.gracefully(event_history: event_history) if exit_gracefully
    rescue Interrupt, StandardError => e
      raise e
    end

    # Display Usage for this Module

    public_class_method def self.help
      puts "USAGE:
        logger = #{self}.create()
      "
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cryptum-0.0.388 lib/cryptum/log.rb
cryptum-0.0.387 lib/cryptum/log.rb