module Facter::Core::Logging
Constants
- GREEN
@api private
- RESET
@api private
Public Instance Methods
Clears the seen state of debug and warning messages. See {debugonce} and {warnonce}.
@return [void]
@api private
# File lib/facter/core/logging.rb, line 193 def clear_messages @@debug_messages.clear @@warn_messages.clear end
Prints a debug message if debugging is turned on
@param msg [String] the debug message @return [void]
# File lib/facter/core/logging.rb, line 44 def debug(msg) if self.debugging? if msg.nil? or msg.empty? invoker = caller[0].slice(/.*:\d+/) self.warn "#{self.class}#debug invoked with invalid message #{msg.inspect}:#{msg.class} at #{invoker}" elsif @@message_callback @@message_callback.call(:debug, msg) else puts GREEN + msg + RESET end end end
Enable or disable logging of debug messages
@param bool [true, false] @return [void]
@api private
# File lib/facter/core/logging.rb, line 150 def debugging(bool) @@debug = bool end
Is debugging enabled?
@return [true, false]
@api private
# File lib/facter/core/logging.rb, line 159 def debugging? @@debug end
Prints a debug message only once.
@note Uniqueness is based on the string, not the specific location
of the method call.
@param msg [String] the debug message @return [void]
# File lib/facter/core/logging.rb, line 64 def debugonce(msg) if msg and not msg.empty? and @@debug_messages[msg].nil? @@debug_messages[msg] = true debug(msg) end end
# File lib/facter/core/logging.rb, line 110 def format_exception(exception, message, trace) arr = [] if message == :default arr << exception.message elsif message arr << message end if trace arr.concat(exception.backtrace) end arr.flatten.join("\n") end
# File lib/facter/core/logging.rb, line 106 def log_exception(exception, message = :default) self.warn(format_exception(exception, message, @@trace)) end
Used to register a callback that is called when a message is logged. If a block is given, Facter will not log messages. If a block is not given, Facter will resume logging messages. @param block [Proc] the callback to call when a message is logged.
The first argument to the callback will be a symbol representing a level. The supported levels are: :trace, :debug, :info, :warn, :error, and :fatal. The second argument to the callback will be a string containing the message that was logged.
@api public
# File lib/facter/core/logging.rb, line 36 def on_message(&block) @@message_callback = block end
Print timing information
@param string [String] the time to print @return [void]
@api private
# File lib/facter/core/logging.rb, line 134 def show_time(string) return unless string && self.timing? if @@message_callback @@message_callback.call(:info, string) else $stderr.puts "#{GREEN}#{string}#{RESET}" end end
Enable or disable logging of timing information
@param bool [true, false] @return [void]
@api private
# File lib/facter/core/logging.rb, line 169 def timing(bool) @@timing = bool end
Returns whether timing output is turned on
@api private
# File lib/facter/core/logging.rb, line 176 def timing? @@timing end
# File lib/facter/core/logging.rb, line 180 def trace(bool) @@trace = bool end
# File lib/facter/core/logging.rb, line 184 def trace? @@trace end
Prints a warning message. The message is only printed if debugging is enabled.
@param msg [String] the warning message to be printed
@return [void]
# File lib/facter/core/logging.rb, line 77 def warn(msg) if msg.nil? or msg.empty? invoker = caller[0].slice(/.*:\d+/) msg = "#{self.class}#debug invoked with invalid message #{msg.inspect}:#{msg.class} at #{invoker}" end if @@message_callback @@message_callback.call(:warn, msg) else Kernel.warn msg end end
Prints a warning message only once per process. Each unique string is printed once.
@note Unlike {warn} the message will be printed even if debugging is
not turned on. This behavior is likely to change and should not be relied on.
@param msg [String] the warning message to be printed
@return [void]
# File lib/facter/core/logging.rb, line 99 def warnonce(msg) if @@warn_messages[msg].nil? self.warn(msg) @@warn_messages[msg] = true end end