Module: Log
- Extended by:
- Term::ANSIColor
- Defined in:
- lib/rbbt/util/log.rb,
lib/rbbt/util/log/progress.rb,
lib/rbbt/util/log/progress/util.rb,
lib/rbbt/util/log/progress/report.rb
Defined Under Namespace
Classes: ProgressBar
Constant Summary collapse
- LOG_MUTEX =
ToDo: Iām not sure if using a Mutex here really gives troubles in CPU concurrency
MockMutex.new
- SEVERITY_COLOR =
.collect{|e| ā033[#{e}ā}
[reset, cyan, green, magenta, blue, yellow, red]
- HIGHLIGHT =
"\033[1m"
- LAST =
"log"
Class Attribute Summary collapse
-
.logfile(file = nil) ⇒ Object
Returns the value of attribute logfile.
-
.nocolor ⇒ Object
Returns the value of attribute nocolor.
-
.severity ⇒ Object
Returns the value of attribute severity.
-
.tty_size ⇒ Object
Returns the value of attribute tty_size.
Class Method Summary collapse
- ._ignore_stderr ⇒ Object
- .clear_line(out = STDOUT) ⇒ Object
- .color(severity, str = nil, reset = false) ⇒ Object
- .color_stack(stack) ⇒ Object
- .debug(message = nil, &block) ⇒ Object
- .deprecated(m) ⇒ Object
- .error(message = nil, &block) ⇒ Object
- .exception(e) ⇒ Object
- .get_level(level) ⇒ Object
- .high(message = nil, &block) ⇒ Object
- .highlight(str = nil) ⇒ Object
- .ignore_stderr(&block) ⇒ Object
- .info(message = nil, &block) ⇒ Object
- .last_caller(stack) ⇒ Object
- .log(message = nil, severity = MEDIUM, &block) ⇒ Object
- .log_obj_fingerprint(obj, level, file = $stdout) ⇒ Object
- .log_obj_inspect(obj, level, file = $stdout) ⇒ Object
- .low(message = nil, &block) ⇒ Object
- .medium(message = nil, &block) ⇒ Object
- .reset_color ⇒ Object
- .return_line ⇒ Object
- .stack(stack) ⇒ Object
- .tsv(tsv) ⇒ Object
- .uncolor(str) ⇒ Object
- .warn(message = nil, &block) ⇒ Object
- .with_severity(level) ⇒ Object
Class Attribute Details
.logfile(file = nil) ⇒ Object
Returns the value of attribute logfile.
72 73 74 |
# File 'lib/rbbt/util/log.rb', line 72 def logfile @logfile end |
.nocolor ⇒ Object
Returns the value of attribute nocolor.
72 73 74 |
# File 'lib/rbbt/util/log.rb', line 72 def nocolor @nocolor end |
.severity ⇒ Object
Returns the value of attribute severity.
72 73 74 |
# File 'lib/rbbt/util/log.rb', line 72 def severity @severity end |
.tty_size ⇒ Object
Returns the value of attribute tty_size.
72 73 74 |
# File 'lib/rbbt/util/log.rb', line 72 def tty_size @tty_size end |
Class Method Details
._ignore_stderr ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/rbbt/util/log.rb', line 37 def self._ignore_stderr backup_stderr = STDERR.dup File.open('/dev/null', 'w') do |f| STDERR.reopen(f) begin yield ensure STDERR.reopen backup_stderr backup_stderr.close end end end |
.clear_line(out = STDOUT) ⇒ Object
140 141 142 |
# File 'lib/rbbt/util/log.rb', line 140 def self.clear_line(out = STDOUT) out.puts Log.return_line << " " * (Log.tty_size || 80) << Log.return_line unless nocolor end |
.color(severity, str = nil, reset = false) ⇒ Object
124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/rbbt/util/log.rb', line 124 def self.color(severity, str = nil, reset = false) return str.dup || "" if nocolor color = reset ? Term::ANSIColor.reset : "" color << SEVERITY_COLOR[severity] if Integer === severity color << Term::ANSIColor.send(severity) if Symbol === severity and Term::ANSIColor.respond_to? severity if str.nil? color else color + str.to_s + self.color(0) end end |
.color_stack(stack) ⇒ Object
242 243 244 245 246 247 248 249 |
# File 'lib/rbbt/util/log.rb', line 242 def self.color_stack(stack) stack.collect do |line| line = line.sub('`',"'") color = :green if line =~ /workflow/ color = :blue if line =~ /rbbt-/ Log.color color, line end end |
.debug(message = nil, &block) ⇒ Object
202 203 204 |
# File 'lib/rbbt/util/log.rb', line 202 def self.debug( = nil, &block) log(, DEBUG, &block) end |
.deprecated(m) ⇒ Object
236 237 238 239 240 |
# File 'lib/rbbt/util/log.rb', line 236 def self.deprecated(m) stack = caller warn("DEPRECATED: " << Log.last_caller(stack)) warn("* " << (m || "").to_s) end |
.error(message = nil, &block) ⇒ Object
226 227 228 |
# File 'lib/rbbt/util/log.rb', line 226 def self.error( = nil, &block) log(, ERROR, &block) end |
.exception(e) ⇒ Object
230 231 232 233 234 |
# File 'lib/rbbt/util/log.rb', line 230 def self.exception(e) stack = caller error([e.class.to_s, e.].compact * ": " ) error("BACKTRACE: " << Log.last_caller(stack) << "\n" + color_stack(e.backtrace)*"\n") end |
.get_level(level) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/rbbt/util/log.rb', line 56 def self.get_level(level) case level when Numeric level.to_i when String begin Log.const_get(level.upcase) rescue Log.exception $! end when Symbol get_level(level.to_s) end || 0 end |
.high(message = nil, &block) ⇒ Object
214 215 216 |
# File 'lib/rbbt/util/log.rb', line 214 def self.high( = nil, &block) log(, HIGH, &block) end |
.highlight(str = nil) ⇒ Object
144 145 146 147 148 149 150 151 152 |
# File 'lib/rbbt/util/log.rb', line 144 def self.highlight(str = nil) if str.nil? return "" if nocolor HIGHLIGHT else return str if nocolor HIGHLIGHT + str + color(0) end end |
.ignore_stderr(&block) ⇒ Object
50 51 52 53 54 |
# File 'lib/rbbt/util/log.rb', line 50 def self.ignore_stderr(&block) LOG_MUTEX.synchronize do _ignore_stderr &block end end |
.info(message = nil, &block) ⇒ Object
218 219 220 |
# File 'lib/rbbt/util/log.rb', line 218 def self.info( = nil, &block) log(, INFO, &block) end |
.last_caller(stack) ⇒ Object
27 28 29 30 31 32 33 34 35 |
# File 'lib/rbbt/util/log.rb', line 27 def self.last_caller(stack) line = nil pos ||= 0 while line.nil? or line =~ /util\/log\.rb/ and stack.any? line = stack.shift end line ||= caller.first line.gsub('`', "'") end |
.log(message = nil, severity = MEDIUM, &block) ⇒ Object
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/rbbt/util/log.rb', line 155 def self.log( = nil, severity = MEDIUM, &block) return if severity < self.severity ||= block.call if block_given? return if .nil? time = Time.now.strftime("%m/%d/%y-%H:%M:%S.%L") sev_str = severity.to_s prefix = time << color(severity) << "[" << sev_str << "]" << color(0) = "" << highlight << << color(0) if severity >= INFO str = prefix << " " << .to_s LOG_MUTEX.synchronize do STDERR.puts str Log::LAST.replace "log" logfile.puts str unless logfile.nil? nil end end |
.log_obj_fingerprint(obj, level, file = $stdout) ⇒ Object
189 190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/rbbt/util/log.rb', line 189 def self.log_obj_fingerprint(obj, level, file = $stdout) stack = caller line = Log.last_caller stack level = Log.get_level level name = Log::SEVERITY_NAMES[level] + ": " Log.log Log.color(level, name, true) << line, level Log.log "", level Log.log Log.color(level, "=> ", true) << Misc.fingerprint(obj), level Log.log "", level end |
.log_obj_inspect(obj, level, file = $stdout) ⇒ Object
176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/rbbt/util/log.rb', line 176 def self.log_obj_inspect(obj, level, file = $stdout) stack = caller line = Log.last_caller stack level = Log.get_level level name = Log::SEVERITY_NAMES[level] + ": " Log.log Log.color(level, name, true) << line, level Log.log "", level Log.log Log.color(level, "=> ", true) << obj.inspect, level Log.log "", level end |
.low(message = nil, &block) ⇒ Object
206 207 208 |
# File 'lib/rbbt/util/log.rb', line 206 def self.low( = nil, &block) log(, LOW, &block) end |
.medium(message = nil, &block) ⇒ Object
210 211 212 |
# File 'lib/rbbt/util/log.rb', line 210 def self.medium( = nil, &block) log(, MEDIUM, &block) end |
.reset_color ⇒ Object
120 121 122 |
# File 'lib/rbbt/util/log.rb', line 120 def self.reset_color reset end |
.return_line ⇒ Object
136 137 138 |
# File 'lib/rbbt/util/log.rb', line 136 def self.return_line nocolor ? "" : "\033[1A" end |
.stack(stack) ⇒ Object
257 258 259 260 261 262 263 264 265 |
# File 'lib/rbbt/util/log.rb', line 257 def self.stack(stack) LOG_MUTEX.synchronize do STDERR.puts Log.color :magenta, "Stack trace: " << Log.last_caller(caller) color_stack(stack).each do |line| STDERR.puts line end end end |
.tsv(tsv) ⇒ Object
251 252 253 254 255 |
# File 'lib/rbbt/util/log.rb', line 251 def self.tsv(tsv) STDERR.puts Log.color :magenta, "TSV log: " << Log.last_caller(caller).gsub('`',"'") STDERR.puts Log.color(:blue, "=> "<< Misc.fingerprint(tsv), true) STDERR.puts Log.color(:cyan, "=> " << tsv.summary) end |
.uncolor(str) ⇒ Object
116 117 118 |
# File 'lib/rbbt/util/log.rb', line 116 def self.uncolor(str) Term::ANSIColor.uncolor(str) end |
.warn(message = nil, &block) ⇒ Object
222 223 224 |
# File 'lib/rbbt/util/log.rb', line 222 def self.warn( = nil, &block) log(, WARN, &block) end |