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