Class: Aspera::Log
Overview
Singleton object for logging
Constant Summary collapse
- LOG_TYPES =
where logs are sent to
i[stderr stdout syslog].freeze
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
class.
-
#logger_type ⇒ Object
class.
-
#program_name ⇒ Object
writeonly
Sets the attribute program_name.
Class Method Summary collapse
-
.capture_stderr ⇒ Object
Capture the output of $stderr and log it at debug level.
-
.dump(name, object, format = :json) ⇒ Object
dump object in debug mode.
-
.levels ⇒ Object
levels are :debug,:info,:warn,:error,fatal,:unknown.
-
.log ⇒ Object
get the logger object of singleton.
Instance Method Summary collapse
-
#level ⇒ Object
get symbol of debug level of underlying logger.
-
#level=(new_level) ⇒ Object
set log level of underlying logger given symbol level.
Instance Attribute Details
#logger ⇒ Object (readonly)
class
53 54 55 |
# File 'lib/aspera/log.rb', line 53 def logger @logger end |
#logger_type ⇒ Object
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
54 55 56 |
# File 'lib/aspera/log.rb', line 54 def program_name=(value) @program_name = value end |
Class Method Details
.capture_stderr ⇒ Object
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
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 |
.levels ⇒ Object
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 |
.log ⇒ Object
get the logger object of singleton
22 |
# File 'lib/aspera/log.rb', line 22 def log; instance.logger; end |
Instance Method Details
#level ⇒ Object
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 |