module SpiderFramework::EnhancedLogger

Attributes

level[RW]
names_only[RW]

Public Class Methods

included(base) click to toggle source
# File lib/enhanced_logger.rb, line 11
def included(base)
  # 构造绑定类的 @logger 实例
  base.class_eval do
    name = base.name
    names_only = EnhancedLogger.names_only
    if !names_only || names_only.include?(name)
      @logger = Logger.new(STDOUT)
      @logger.level = EnhancedLogger.level
      original_formatter = Logger::Formatter.new
      @logger.formatter = proc { |severity, datetime, progname, msg|
        "[#{datetime.strftime('%F %T')}] #{severity} -- #{name}: #{msg}\n"
      }
    else
      @logger = Logger.new(IO::NULL)
    end
  end

  base.singleton_class.class_eval do
    attr_accessor :logger
  end
end

Public Instance Methods

logger() click to toggle source
# File lib/enhanced_logger.rb, line 34
def logger
  self.class.logger
end