class Aspera::Log

Singleton object for logging

Attributes

logger[R]
logger_type[R]
program_name[W]

Public Class Methods

dump(name,object,format=:json) click to toggle source

dump object in debug mode @param name string or symbol @param format either pp or json format

# File lib/aspera/log.rb, line 28
def self.dump(name,object,format=:json)
  result=case format
  when :ruby;PP.pp(object,'')
  when :json;JSON.pretty_generate(object) rescue PP.pp(object,'')
  else raise "wrong parameter, expect pp or json"
  end
  self.log.debug("#{name.to_s.green} (#{format})=\n#{result}")
end
levels() click to toggle source

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

# File lib/aspera/log.rb, line 17
def self.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() click to toggle source

get the logger object of singleton

# File lib/aspera/log.rb, line 23
def self.log; self.instance.logger; end
logtypes() click to toggle source

where logs are sent to

# File lib/aspera/log.rb, line 20
def self.logtypes; [:stderr,:stdout,:syslog];end
new() click to toggle source
# File lib/aspera/log.rb, line 80
def initialize
  @logger=nil
  @program_name='aspera'
  # this sets @logger and @logger_type
  self.logger_type=:stderr
end

Public Instance Methods

level() click to toggle source

get symbol of debug level of underlying logger

# File lib/aspera/log.rb, line 43
def level
  Logger::Severity.constants.each do |name|
    return name.downcase.to_sym if @logger.level.eql?(Logger::Severity.const_get(name))
  end
  raise "error"
end
level=(new_level) click to toggle source

set log level of underlying logger given symbol level

# File lib/aspera/log.rb, line 38
def level=(new_level)
  @logger.level=Logger::Severity.const_get(new_level.to_sym.upcase)
end
logger_type=(new_logtype) click to toggle source

change underlying logger, but keep log level

# File lib/aspera/log.rb, line 51
def logger_type=(new_logtype)
  current_severity_integer=if @logger.nil?
    if ENV.has_key?('AS_LOG_LEVEL')
      ENV['AS_LOG_LEVEL']
    else
      Logger::Severity::WARN
    end
  else
    @logger.level
  end
  case new_logtype
  when :stderr
    @logger = Logger.new(STDERR)
  when :stdout
    @logger = Logger.new(STDOUT)
  when :syslog
    require 'syslog/logger'
    @logger = Syslog::Logger.new(@program_name)
  else
    raise "unknown log type: #{new_logtype.class} #{new_logtype}"
  end
  @logger.level=current_severity_integer
  @logger_type=new_logtype
end