class Facter::Log

Public Class Methods

clear_messages() click to toggle source
# File lib/facter/framework/logging/logger.rb, line 23
def clear_messages
  @@debug_messages.clear
  @@warn_messages.clear
end
errors?() click to toggle source
# File lib/facter/framework/logging/logger.rb, line 40
def errors?
  @@has_errors
end
level() click to toggle source
# File lib/facter/framework/logging/logger.rb, line 36
def level
  @@logger.level
end
level=(log_level) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 32
def level=(log_level)
  @@logger.level = log_level
end
new(logged_class) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 95
def initialize(logged_class)
  @class_name = LoggerHelper.determine_callers_name(logged_class)
  return unless @@logger.nil?

  @@logger = Logger.new(STDOUT)
  @@logger.level = DEFAULT_LOG_LEVEL
end
on_message(&block) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 28
def on_message(&block)
  @@message_callback = block
end
output(output) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 44
def output(output)
  return if @@logger

  @@logger = Logger.new(output)
  set_logger_format
  @@logger.level = DEFAULT_LOG_LEVEL
end
set_logger_format() click to toggle source
# File lib/facter/framework/logging/logger.rb, line 52
def set_logger_format
  @@logger.formatter = proc do |severity, datetime, _progname, msg|
    datetime = datetime.strftime(@datetime_format || '%Y-%m-%d %H:%M:%S.%6N ')
    "[#{datetime}] #{severity} #{msg} \n"
  end
end
show_time(string) click to toggle source

Print timing information

@param string [String] the time to print @return [void]

@api private

# File lib/facter/framework/logging/logger.rb, line 67
def show_time(string)
  return unless string && timing?

  if @@message_callback
    @@message_callback.call(:info, string)
  else
    warn("#{GREEN}#{string}#{RESET}")
  end
end
timing(bool) click to toggle source

Enable or disable logging of timing information

@param bool [true, false] @return [void]

@api private

# File lib/facter/framework/logging/logger.rb, line 83
def timing(bool)
  @@timing = bool
end
timing?() click to toggle source

Returns whether timing output is turned on

@api private

# File lib/facter/framework/logging/logger.rb, line 90
def timing?
  @@timing
end

Public Instance Methods

debug(msg) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 103
def debug(msg)
  return unless debugging_active?

  if @@message_callback && Options[:allow_external_loggers]
    @@message_callback.call(:debug, msg)
  else
    msg = colorize(msg, CYAN) if Options[:color]
    @@logger.debug(@class_name + ' - ' + msg)
  end
end
debugonce(msg) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 114
def debugonce(msg)
  return unless debugging_active?

  message_string = msg.to_s
  return if @@debug_messages.include? message_string

  @@debug_messages << message_string
  debug(message_string)
end
error(msg, colorize = false) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 152
def error(msg, colorize = false)
  @@has_errors = true

  if @@message_callback && Options[:allow_external_loggers]
    @@message_callback.call(:error, msg)
  else
    msg = colorize(msg, RED) if colorize || Options[:color]
    @@logger.error(@class_name + ' - ' + msg)
  end
end
info(msg) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 124
def info(msg)
  if msg.nil? || msg.empty?
    empty_message_error(msg)
  elsif @@message_callback && Options[:allow_external_loggers]
    @@message_callback.call(:info, msg)
  else
    msg = colorize(msg, GREEN) if Options[:color]
    @@logger.info(@class_name + ' - ' + msg)
  end
end
log_exception(exception) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 163
def log_exception(exception)
  msg = exception.message
  msg += "\n" + exception.backtrace.join("\n") if Options[:trace]

  error(msg, true)
end
warn(msg) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 135
def warn(msg)
  if @@message_callback && Options[:allow_external_loggers]
    @@message_callback.call(:warn, msg)
  else
    msg = colorize(msg, YELLOW) if Options[:color]
    @@logger.warn(@class_name + ' - ' + msg)
  end
end
warnonce(message) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 144
def warnonce(message)
  message_string = message.to_s
  return if @@warn_messages.include? message_string

  @@warn_messages << message_string
  warn(message_string)
end

Private Instance Methods

colorize(msg, color) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 172
def colorize(msg, color)
  "#{color}#{msg}#{RESET}"
end
debugging_active?() click to toggle source
# File lib/facter/framework/logging/logger.rb, line 176
def debugging_active?
  return true unless Facter.respond_to?(:debugging?)

  Facter.debugging?
end
empty_message_error(msg) click to toggle source
# File lib/facter/framework/logging/logger.rb, line 182
def empty_message_error(msg)
  invoker = caller(1..1).first.slice(/.*:\d+/)
  @@logger.warn "#{self.class}#debug invoked with invalid message #{msg.inspect}:#{msg.class} at #{invoker}"
end