lib/cryptum/log.rb in cryptum-0.0.386 vs lib/cryptum/log.rb in cryptum-0.0.387

- old
+ new

@@ -4,37 +4,57 @@ # 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.create - logger = Logger.new($stdout) - level = opts[:level] + 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] - case level.to_s.downcase.to_sym + 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 - else + 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' - - logger.formatter = proc do |severity, _datetime, _progname, msg| - # TODO: Include datetime & progname vars - "[#{severity}] #{msg}\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 - logger - rescue StandardError => e + Cryptum::UI::Exit.gracefully(event_history: event_history) if exit_gracefully + rescue Interrupt, StandardError => e raise e end # Display Usage for this Module