Module: Dr::Logger

Included in:
BuildRoot, GnuPG, Package, Package, Repo, ShellCmd
Defined in:
lib/dr/logger.rb

Constant Summary collapse

@@message_types =
{
  :info => "info",
  :warn => "warn",
  :err  => "err",
  :debug => "debug"
}
@@verbosity =
:verbose
@@logger_verbosity_levels =
{
  :essential => 0,
  :important => 1,
  :informative => 2,
  :verbose => 3
}
@@log_file =
nil

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.log(msg_type, msg, verbosity = nil) ⇒ Object



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/dr/logger.rb', line 105

def self.log(msg_type, msg, verbosity=nil)
  out = "dr".style("log-head") << " "

  case msg_type
  when :info
    out << "info".style(@@message_types[:info])
    verbosity = :informative unless verbosity
  when :warn
    out << "WARN".style(@@message_types[:warn])
    verbosity = :informative unless verbosity
  when :err
    out << "ERR!".style(@@message_types[:err])
    verbosity = :essential unless verbosity
  when :debug
    out << "dbg?".style(@@message_types[:debug])
    verbosity = :verbose unless verbosity
  end

  if verbosity <= @@verbosity
    out << " " << msg.chomp
    puts out
    STDOUT.flush

    unless @@log_file.nil?
       @@log_file.puts strip_colours out
       @@log_file.flush
    end
  end
end

.set_logfile(file) ⇒ Object



94
95
96
# File 'lib/dr/logger.rb', line 94

def self.set_logfile(file)
  @@log_file = file
end

.set_verbosity(level) ⇒ Object



98
99
100
101
102
103
# File 'lib/dr/logger.rb', line 98

def self.set_verbosity(level)
  msg = "Message verbosity level not recognised (#{})."
  raise msg unless @@logger_verbosity_levels.has_key? level.to_sym

  @@verbosity = level.to_sym
end

Instance Method Details

#log(msg_type, msg) ⇒ Object



135
136
137
# File 'lib/dr/logger.rb', line 135

def log(msg_type, msg)
  Logger::log msg_type, msg
end

#tag(tag, msg) ⇒ Object



139
140
141
# File 'lib/dr/logger.rb', line 139

def tag(tag, msg)
  tag.fg("blue").bg("dark-grey") << " " << msg
end