lib/logging/logger.rb in logging-0.8.0 vs lib/logging/logger.rb in logging-0.9.0

- old
+ new

@@ -1,6 +1,5 @@ -# $Id$ require 'thread' module Logging @@ -103,12 +102,13 @@ true end CODE end - logger.meta_eval code + logger._meta_eval(code, __FILE__, __LINE__) end + logger end # :startdoc: end # class << self @@ -141,18 +141,11 @@ 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 - @name = name - @parent = repo.parent(name) - @appenders = [] - @additive = true - @trace = false - @level = nil - ::Logging::Logger.define_log_methods(self) - + _setup(name, :parent => repo.parent(name)) repo.children(name).each {|c| c.parent = self} end # call-seq: # log <=> other @@ -405,24 +398,41 @@ ::Logging::Logger.define_log_methods(self) ::Logging::Repository.instance.children(name).each do |c| c.define_log_methods end + self end # :stopdoc: + public # call-seq: - # meta_eval( code ) + # _meta_eval( code ) # # Evaluates the given string of _code_ if the singleton class of this # Logger object. # - def meta_eval( code ) + def _meta_eval( code, file = nil, line = nil ) meta = class << self; self end - meta.class_eval code + meta.class_eval code, file, line end - public :meta_eval + + # call-seq: + # _setup( name, opts = {} ) + # + # Configures internal variables for the logger. This method can be used + # to avoid storing the logger in the repository. + # + def _setup( name, opts = {} ) + @name = name + @parent = opts.getopt(:parent) + @appenders = opts.getopt(:appenders, []) + @additive = opts.getopt(:additive, true) + @trace = opts.getopt(:trace, false) + @level = opts.getopt(:level) + ::Logging::Logger.define_log_methods(self) + end # :startdoc: end # class Logger end # module Logging