module ActiveSupport::TaggedLogging

def self.new(logger)

def self.new(logger)
  logger = logger.clone
  if logger.formatter
    logger.formatter = logger.formatter.dup
  else
    # Ensure we set a default formatter so we aren't extending nil!
    logger.formatter = ActiveSupport::Logger::SimpleFormatter.new
  end
  logger.formatter.extend Formatter
  logger.extend(self)
end

def flush

def flush
  clear_tags!
  super if defined?(super)
end

def tagged(*tags)

def tagged(*tags)
  if block_given?
    formatter.tagged(*tags) { yield self }
  else
    logger = ActiveSupport::TaggedLogging.new(self)
    logger.formatter.extend LocalTagStorage
    logger.push_tags(*formatter.current_tags, *tags)
    logger
  end
end