Class: Aspera::Log

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

Overview

Singleton object for logging

Constant Summary collapse

LOG_TYPES =

where logs are sent to

i[stderr stdout syslog].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#loggerObject (readonly)

class



53
54
55
# File 'lib/aspera/log.rb', line 53

def logger
  @logger
end

#logger_typeObject

class



53
54
55
# File 'lib/aspera/log.rb', line 53

def logger_type
  @logger_type
end

#program_name=(value) ⇒ Object (writeonly)

Sets the attribute program_name

Parameters:

  • value

    the value to set the attribute program_name to.



54
55
56
# File 'lib/aspera/log.rb', line 54

def program_name=(value)
  @program_name = value
end

Class Method Details

.capture_stderrObject

Capture the output of $stderr and log it at debug level



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

def capture_stderr
  real_stderr = $stderr
  $stderr = StringIO.new
  yield
  log.debug($stderr.string)
ensure
  $stderr = real_stderr
end

.dump(name, object, format = :json) ⇒ Object

dump object in debug mode

Parameters:

  • name

    string or symbol

  • format (defaults to: :json)

    either pp or json format



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/aspera/log.rb', line 27

def dump(name, object, format=:json)
  log.debug do
    result =
      case format
      when :json
        JSON.pretty_generate(object) rescue PP.pp(object, +'')
      when :ruby
        PP.pp(object, +'')
      else
        raise 'wrong parameter, expect pp or json'
      end
    "#{name.to_s.green} (#{format})=\n#{result}"
  end
end

.levelsObject

levels are :debug,:info,:warn,:error,fatal,:unknown



19
# File 'lib/aspera/log.rb', line 19

def levels; Logger::Severity.constants.sort{|a, b|Logger::Severity.const_get(a) <=> Logger::Severity.const_get(b)}.map{|c|c.downcase.to_sym}; end

.logObject

get the logger object of singleton



22
# File 'lib/aspera/log.rb', line 22

def log; instance.logger; end

Instance Method Details

#levelObject

get symbol of debug level of underlying logger



62
63
64
65
66
67
68
# File 'lib/aspera/log.rb', line 62

def level
  Logger::Severity.constants.each do |name|
    return name.downcase.to_sym if @logger.level.eql?(Logger::Severity.const_get(name))
  end
  # should not happen
  raise "INTERNAL ERROR: unexpected level #{@logger.level}"
end

#level=(new_level) ⇒ Object

set log level of underlying logger given symbol level



57
58
59
# File 'lib/aspera/log.rb', line 57

def level=(new_level)
  @logger.level = Logger::Severity.const_get(new_level.to_sym.upcase)
end