Sha256: 184b0265507afa0be06c9c044fd49558e116dca83509a3949d7a83bb08565e8a
Contents?: true
Size: 1.84 KB
Versions: 4
Compression:
Stored size: 1.84 KB
Contents
# :nodoc: # Version:: $Id: repository.rb,v 1.1.1.1 2004/03/19 03:31:07 fando Exp $ require "singleton" module Log4r class Logger # The repository stores a Hash of loggers keyed to their fullnames and # provides a few functions to reduce the code bloat in log4r/logger.rb. # This class is supposed to be transparent to end users, hence it is # a class within Logger. If anyone knows how to make this private, # let me know. class Repository # :nodoc: include Singleton attr_reader :loggers def initialize @loggers = Hash.new end def self.[](fullname) instance.loggers[fullname] end def self.[]=(fullname, logger) instance.loggers[fullname] = logger end # Retrieves all children of a parent def self.all_children(parent) # children have the parent name + delimiter in their fullname daddy = parent.name + Private::Config::LoggerPathDelimiter for fullname, logger in instance.loggers yield logger if parent.is_root? || fullname =~ /#{daddy}/ end end # when new loggers are introduced, they may get inserted into # an existing inheritance tree. this method # updates the children of a logger to link their new parent def self.reassign_any_children(parent) for fullname, logger in instance.loggers next if logger.is_root? logger.parent = parent if logger.path =~ /^#{parent.fullname}$/ end end # looks for the first defined logger in a child's path # or nil if none found (which will then be rootlogger) def self.find_ancestor(path) arr = path.split Log4rConfig::LoggerPathDelimiter logger = nil while arr.size > 0 do logger = Repository[arr.join(Log4rConfig::LoggerPathDelimiter)] break unless logger.nil? arr.pop end logger end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
log4r-1.1.2 | src/log4r/repository.rb |
log4r-1.1.1 | src/log4r/repository.rb |
log4r-1.1.0 | src/log4r/repository.rb |
log4r-1.0.6 | src/log4r/repository.rb |