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