Class: F4R::F4RLogger
Overview
Singleton to provide a common logging mechanism for all objects. It exposes essentially the same interface as the Logger class but just as a singleton and with some additional methods like 'debug', 'warn', 'info'.
It also facilitates configurable log output redirection based on severity levels to help reduce noise in the different output devices.
Instance Method Summary collapse
-
#color=(bool) ⇒ Object
Allow other programs to enable or disable colour output.
-
#color? ⇒ Boolean
When set to True enables logger colour output.
-
#debug(msg = '', items = {}) {|block| ... } ⇒ String
DEBUG level messages.
-
#decode(msg, items = {}) {|block| ... } ⇒ String
DECODE level messages.
-
#decode_logger ⇒ Logger
@decode_logger. -
#decode_logger=(logger) ⇒ Logger
@decode_logger. -
#encode(msg, items = {}) {|block| ... } ⇒ String
ENCODE level messages.
-
#encode_logger ⇒ Logger
@encode_logger. -
#encode_logger=(logger) ⇒ Logger
@encode_logger. -
#error(msg) {|block| ... } ⇒ Object
ERROR level messages.
-
#format_message(msg, items) ⇒ String
Formats message and items for the [F4RLogger] logger output.
-
#info(msg) {|block| ... } ⇒ String
INFO level messages.
-
#level ⇒ Symbol, ...
Severity level for all [F4RLogger] loggers.
-
#level=(level) ⇒ Object
Method for setting the severity level for all loggers.
-
#log_formater(logger) ⇒ Object
Logger formatter configuration.
-
#logger ⇒ Logger
@logger. -
#logger=(logger) ⇒ Logger
@logger. -
#tint(clr, text) ⇒ String
Simple colour codes mapping.
-
#warn(msg) {|block| ... } ⇒ String
WARN level messages.
Instance Method Details
#color=(bool) ⇒ Object
Allow other programs to enable or disable colour output.
183 184 185 |
# File 'lib/f4r.rb', line 183 def color=(bool) @color = bool end |
#color? ⇒ Boolean
When set to True enables logger colour output.
192 193 194 |
# File 'lib/f4r.rb', line 192 def color? @color ||= false end |
#debug(msg = '', items = {}) {|block| ... } ⇒ String
DEBUG level messages.
Example:
>> Log.debug [self.class, __method__], {a:1, b:2}
=> DEBUG <F4R::Record#fields> a: 1 b: 2
223 224 225 |
# File 'lib/f4r.rb', line 223 def debug(msg = '', items = {}, &block) logger.debug((msg, items), &block) end |
#decode(msg, items = {}) {|block| ... } ⇒ String
DECODE level messages.
Similar to #debug but with its specific [F4RLogger] logger.
290 291 292 |
# File 'lib/f4r.rb', line 290 def decode(msg, items = {}, &block) decode_logger.decode((msg, items), &block) end |
#decode_logger ⇒ Logger
Returns @decode_logger.
146 147 148 |
# File 'lib/f4r.rb', line 146 def decode_logger @decode_logger ||= Logger.new('/tmp/f4r-decode.log') end |
#decode_logger=(logger) ⇒ Logger
Returns @decode_logger.
125 126 127 |
# File 'lib/f4r.rb', line 125 def decode_logger=(logger) log_formater(logger) && @decode_logger = logger end |
#encode(msg, items = {}) {|block| ... } ⇒ String
ENCODE level messages.
Similar to #debug but with its specific [F4RLogger] logger
276 277 278 |
# File 'lib/f4r.rb', line 276 def encode(msg, items = {}, &block) decode_logger.encode((msg, items), &block) end |
#encode_logger ⇒ Logger
Returns @encode_logger.
139 140 141 |
# File 'lib/f4r.rb', line 139 def encode_logger @encode_logger ||= Logger.new('/tmp/f4r-encode.log') end |
#encode_logger=(logger) ⇒ Logger
Returns @encode_logger.
114 115 116 |
# File 'lib/f4r.rb', line 114 def encode_logger=(logger) log_formater(logger) && @encode_logger = logger end |
#error(msg) {|block| ... } ⇒ Object
ERROR level messages.
Raises [F4R::ERROR].
261 262 263 264 |
# File 'lib/f4r.rb', line 261 def error(msg, &block) logger.error(msg, &block) raise Error, msg end |
#format_message(msg, items) ⇒ String
Formats message and items for the [F4RLogger] logger output.
It also adds colour when #color? has been set to true.
318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 |
# File 'lib/f4r.rb', line 318 def (msg, items) if msg.is_a?(Array) if Log.color? msg = Log.tint(:blue, "<#{msg.join('#')}>") else msg = "<#{msg.join('#')}>" end end items.each do |k, v| k = Log.color? ? Log.tint(:green, k.to_s): k.to_s msg += " #{k}: #{v.to_s}" end msg end |
#info(msg) {|block| ... } ⇒ String
INFO level messages.
234 235 236 |
# File 'lib/f4r.rb', line 234 def info(msg, &block) logger.info(msg, &block) end |
#level ⇒ Symbol, ...
Severity level for all [F4RLogger] loggers.
171 172 173 |
# File 'lib/f4r.rb', line 171 def level @level ||= :error end |
#level=(level) ⇒ Object
Method for setting the severity level for all loggers.
158 159 160 161 162 163 164 |
# File 'lib/f4r.rb', line 158 def level=(level) [ logger, decode_logger, encode_logger ].each { |lgr| lgr.level = level} end |
#log_formater(logger) ⇒ Object
Logger formatter configuration
337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 |
# File 'lib/f4r.rb', line 337 def log_formater(logger) logger.formatter = proc do |severity, _, _, msg| if Log.color? sc = { 'DEBUG' => :magenta, 'INFO' => :blue, 'WARN' => :yellow, 'ERROR' => :red, 'ENCODE' => :green, 'DECODE' => :cyan, } Log.tint(sc[severity], "#{'%-6s' % severity} ") + "#{msg}\n" else severity + " #{msg}\n" end end end |
#logger ⇒ Logger
Returns @logger.
132 133 134 |
# File 'lib/f4r.rb', line 132 def logger @logger ||= Logger.new($stdout) end |
#logger=(logger) ⇒ Logger
Returns @logger.
103 104 105 |
# File 'lib/f4r.rb', line 103 def logger=(logger) log_formater(logger) && @logger = logger end |
#tint(clr, text) ⇒ String
Simple colour codes mapping.
301 302 303 304 305 306 307 308 |
# File 'lib/f4r.rb', line 301 def tint(clr, text) codes = { none: 0, bright: 1, black: 30, red: 31, green: 32, yellow: 33, blue: 34, magenta: 35, cyan: 36, white: 37, default: 39, } ["\x1B[", codes[clr].to_s, 'm', text.to_s, "\x1B[0m"].join end |
#warn(msg) {|block| ... } ⇒ String
WARN level messages.
248 249 250 |
# File 'lib/f4r.rb', line 248 def warn(msg, &block) logger.warn(msg.gsub(/\n/, ' '), &block) end |