class Logging::Logger

Public Class Methods

define_log_methods( logger ) click to toggle source
# File lib/dldinternet/mixlib/logging.rb, line 222
def define_log_methods( logger )
  ::Logging::LEVELS.each do |name,num|
    code =  "undef :#{name}  if method_defined? :#{name}\n"
    code << "undef :#{name}? if method_defined? :#{name}?\n"

    unless logger.level.is_a?(Integer)
      puts "logger.level for #{logger.name} is a #{logger.level.class} instead of a Integer!!!"
      exit -1
    end
    # if logger.level > num
    #   code << <<-CODE
    # def #{name}?( ) false end
    # def #{name}( data = nil, trce = false ) false end
    #   CODE
    # else
    #   code << <<-CODE
    # def #{name}?( ) true end
    # def #{name}( data = nil, trce = nil )
    #   caller = Kernel.caller[3]
    #   num = #{num}
    #   level =  #{logger.level}
    #   if num >= level
    #     data = yield if block_given?
    #     #log_event(::Logging::LogEvent.new(@name, num, caller, true))
    #     log_event(::Logging::LogEvent.new(@name, num, data, trce.nil? ? self.caller_tracing : trce))
    #   end
    #   true
    # end
    #   CODE
    # end
                                                          #
    # logger._meta_eval(code, __FILE__, __LINE__)
  end
  logger
end
new( *args ) click to toggle source

Overrides the new method such that only one Logger will be created for any given logger name.

Calls superclass method
# File lib/dldinternet/mixlib/logging.rb, line 262
def new( *args )
        return super if args.empty?

        repo = ::Logging::Repository.instance
        name = repo.to_key(args.shift)
        opts = args.last.instance_of?(Hash) ? args.pop : {}

        @mutex.synchronize do
                logger = repo[name]
                if logger.nil?

                        master = repo.master_for(name)
                        if master
                                if repo.has_logger?(master)
                                        logger = repo[master]
                                else
                                        logger = super(master)
                                        repo[master] = logger
                                        repo.children(master).each {|c| c.__send__(:parent=, logger)}
                                end
                                repo[name] = logger
                        else
                                logger = super(name, opts)
                                repo[name] = logger
                                repo.children(name).each {|c| c.__send__(:parent=, logger)}
                        end
                end
                logger
        end
end
new( name ) click to toggle source
Logger[name]

Returns the logger identified by name.

When name is a String or a Symbol it will be used “as is” to retrieve the logger. When name is a Class the class name will be used to retrieve the logger. When name is an object the name of the object's class will be used to retrieve the logger.

Example:

obj = MyClass.new

log1 = Logger.new(obj)
log2 = Logger.new(MyClass)
log3 = Logger['MyClass']

log1.object_id == log2.object_id         # => true
log2.object_id == log3.object_id         # => true
# File lib/dldinternet/mixlib/logging.rb, line 318
def initialize( name, *args )
  case name
    when String
      raise(ArgumentError, "logger must have a name") if name.empty?
    else raise(ArgumentError, "logger name must be a String") end

  repo = ::Logging::Repository.instance
  opts = args.last.instance_of?(Hash) ? args.pop : {}
  _setup(name, opts.merge({:parent => repo.parent(name)}))
end

Public Instance Methods

caller_tracing() click to toggle source
# File lib/dldinternet/mixlib/logging.rb, line 186
def caller_tracing
                                                  @trace
end
get_trace() click to toggle source
# File lib/dldinternet/mixlib/logging.rb, line 334
def get_trace
  @trace
end
logEvent(evt) click to toggle source
# File lib/dldinternet/mixlib/logging.rb, line 330
def logEvent(evt)
  log_event evt
end
method_missing(method, *args) { |: args| ... } click to toggle source
# File lib/dldinternet/mixlib/logging.rb, line 191
                                  def method_missing(method, *args, &block)
                                          num = ::Logging::LEVELS[method.to_s] rescue nil
                                          if num.nil?
  if method.to_s.match(/\?$/)
    num = ::Logging::LEVELS[method.to_s.gsub(/\?$/,'')] rescue nil
    unless num.nil?
      if self.level > num
        return false
      else
        return true
      end
    end
  end
  log_event(::Logging::LogEvent.new(@name, ::Logging::LEVELS[::Logging::LNAMES[-1].to_s.downcase], "Invalid logging level '#{method}'", true))
  #raise NoMethodError(method)
  false
else
  if self.level > num
    false
  else
    unless args.empty?
      data = block_given? ?  yield : args[0]
      trce = args[1] rescue nil
      log_event(::Logging::LogEvent.new(@name, num, data, trce.nil? ? self.caller_tracing : trce))
    end
    true
  end
end
                                  end