Class: Logger

Inherits:
Object
  • Object
show all
Defined in:
lib/aspera/log.rb

Overview

Extend Ruby logger with trace levels

Defined Under Namespace

Modules: Severity

Constant Summary collapse

TRACE_MAX =

Two additional trace levels

2
SEVERITY_LABEL =

Hash key [Integer] Log level (e.g. 0 for DEBUG) value [Symbol] Uppercase log level label (e.g. :DEBUG)

Severity.constants.to_h { |name| [Severity.const_get(name), name] }

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.make_methods(str_level) ⇒ nil

Define logger methods for a given log level (e.g. debug, debug?, debug!)

Parameters:

  • str_level (String) —

    Log level name (e.g. "DEBUG", "TRACE1")

Returns:

  • (nil)


43
44
45
46
47
48
49
50
# File 'lib/aspera/log.rb', line 43

def make_methods(str_level)
  int_level = ::Logger.const_get(str_level.upcase)
  method_base = str_level.downcase
  define_method(method_base, ->(message = nil, &block) { add(int_level, message, &block) })
  define_method("#{method_base}?", -> { level <= int_level })
  define_method("#{method_base}!", -> { self.level = int_level })
  nil
end

Instance Method Details

#format_severity(severity) ⇒ String

Override

Parameters:

  • severity (Integer) —

    Log severity as int

Returns:

  • (String) —

    Log severity upper case label



35
36
37
# File 'lib/aspera/log.rb', line 35

def format_severity(severity)
  SEVERITY_LABEL[severity] || 'ANY'
end