Class: Facter::Log

Inherits:
Object
  • Object
show all
Defined in:
lib/framework/logging/logger.rb

Constant Summary collapse

@@file_logger =
Logger.new(File.new("#{ROOT_DIR}/example.log", 'a'))
@@legacy_logger =
nil
@@logger =
MultiLogger.new([@@file_logger])
@@message_callback =
nil

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logged_class) ⇒ Log

Returns a new instance of Log.



29
30
31
32
# File 'lib/framework/logging/logger.rb', line 29

def initialize(logged_class)
  determine_callers_name(logged_class)
  set_format_for_file_logger
end

Class Method Details

.add_legacy_logger(output) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/framework/logging/logger.rb', line 34

def self.add_legacy_logger(output)
  return if @@legacy_logger

  @@legacy_logger = Logger.new(output)
  set_format_for_legacy_logger
  @@logger.add_logger(@@legacy_logger)
end

.levelObject



24
25
26
# File 'lib/framework/logging/logger.rb', line 24

def level
  @@logger.level
end

.level=(log_level) ⇒ Object



20
21
22
# File 'lib/framework/logging/logger.rb', line 20

def level=(log_level)
  @@logger.level = log_level
end

.on_message(&block) ⇒ Object



16
17
18
# File 'lib/framework/logging/logger.rb', line 16

def on_message(&block)
  @@message_callback = block
end

.set_format_for_legacy_loggerObject



62
63
64
65
66
67
# File 'lib/framework/logging/logger.rb', line 62

def self.set_format_for_legacy_logger
  @@legacy_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

Instance Method Details

#colorize(msg, color) ⇒ Object



95
96
97
# File 'lib/framework/logging/logger.rb', line 95

def colorize(msg, color)
  "\e[#{color}m#{msg}\e[0m"
end

#debug(msg) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/framework/logging/logger.rb', line 69

def debug(msg)
  return unless Facter.debugging?

  if msg.nil? || msg.empty?
    invoker = caller(1..1).first.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
    @@logger.debug(@class_name + ' - ' + msg)
  end
end

#determine_callers_name(sender_self) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/framework/logging/logger.rb', line 42

def determine_callers_name(sender_self)
  @class_name = case sender_self
                when String
                  sender_self
                when Class
                  sender_self.name
                when Module
                  sender_self.name
                else # when class is singleton
                  sender_self.class.name
                end
end

#error(msg, colorize = false) ⇒ Object



90
91
92
93
# File 'lib/framework/logging/logger.rb', line 90

def error(msg, colorize = false)
  msg = colorize(msg, RED) if colorize && !OsDetector.instance.detect.eql?(:windows)
  @@logger.error(@class_name + ' - ' + msg)
end

#info(msg) ⇒ Object



82
83
84
# File 'lib/framework/logging/logger.rb', line 82

def info(msg)
  @@logger.info(@class_name + ' - ' + msg)
end

#set_format_for_file_loggerObject



55
56
57
58
59
60
# File 'lib/framework/logging/logger.rb', line 55

def set_format_for_file_logger
  @@file_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

#warn(msg) ⇒ Object



86
87
88
# File 'lib/framework/logging/logger.rb', line 86

def warn(msg)
  @@logger.warn(@class_name + ' - ' + msg)
end