class Kafka::TaggedLogger

Public Class Methods

new(logger_or_stream = nil) click to toggle source
Calls superclass method
# File lib/kafka/tagged_logger.rb, line 54
def self.new(logger_or_stream = nil)
  # don't keep wrapping the same logger over and over again
  return logger_or_stream if logger_or_stream.is_a?(TaggedLogger)
  super
end
new(logger_or_stream = nil) click to toggle source
Calls superclass method
# File lib/kafka/tagged_logger.rb, line 60
def initialize(logger_or_stream = nil)
  logger = if %w(info debug warn error).all? { |s| logger_or_stream.respond_to?(s) }
    logger_or_stream
  elsif logger_or_stream
    ::Logger.new(logger_or_stream)
  else
    ::Logger.new(nil)
  end
  super(logger)
end

Public Instance Methods

clear_tags!() click to toggle source
# File lib/kafka/tagged_logger.rb, line 37
def clear_tags!
  current_tags.clear
end
current_tags() click to toggle source
# File lib/kafka/tagged_logger.rb, line 41
def current_tags
  # We use our object ID here to avoid conflicting with other instances
  thread_key = @thread_key ||= "kafka_tagged_logging_tags:#{object_id}".freeze
  Thread.current[thread_key] ||= []
end
flush() click to toggle source
Calls superclass method
# File lib/kafka/tagged_logger.rb, line 71
def flush
  clear_tags!
  super if defined?(super)
end
pop_tags(size = 1) click to toggle source
# File lib/kafka/tagged_logger.rb, line 33
def pop_tags(size = 1)
  current_tags.pop size
end
push_tags(*tags) click to toggle source
# File lib/kafka/tagged_logger.rb, line 27
def push_tags(*tags)
  tags.flatten.reject { |t| t.nil? || t.empty? }.tap do |new_tags|
    current_tags.concat new_tags
  end
end
tagged(*tags) { |self| ... } click to toggle source
# File lib/kafka/tagged_logger.rb, line 20
def tagged(*tags)
  new_tags = push_tags(*tags)
  yield self
ensure
  pop_tags(new_tags.size)
end
tags_text() click to toggle source
# File lib/kafka/tagged_logger.rb, line 47
def tags_text
  tags = current_tags
  if tags.any?
    tags.collect { |tag| "[#{tag}] " }.join
  end
end