Wraps any standard Logger class to provide
tagging capabilities. Examples:
Logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
Logger.tagged("BCX") { Logger.info "Stuff" } # Logs "[BCX] Stuff"
Logger.tagged("BCX", "Jason") { Logger.info "Stuff" } # Logs "[BCX] [Jason] Stuff"
Logger.tagged("BCX") { Logger.tagged("Jason") { Logger.info "Stuff" } } # Logs "[BCX] [Jason] Stuff"
This is used by the default Rails.logger as configured by
Railties to make it easy to stamp log lines with subdomains, request ids,
and anything else to aid debugging of multi-user production applications.
Methods
- A
-
- C
-
- F
-
- M
-
- N
-
- S
-
- T
-
Class Public methods
Source:
show
| on GitHub
def initialize(logger)
@logger = logger
@tags = Hash.new { |h,k| h[k] = [] }
end
Instance Public methods
add(severity, message = nil, progname = nil, &block)
Source:
show
| on GitHub
def add(severity, message = nil, progname = nil, &block)
message = (block_given? ? block.call : progname) if message.nil?
@logger.add(severity, "#{tags_text}#{message}", progname)
end
Source:
show
| on GitHub
def flush
@tags.delete(Thread.current)
@logger.flush if @logger.respond_to?(:flush)
end
method_missing(method, *args)
Source:
show
| on GitHub
def method_missing(method, *args)
@logger.send(method, *args)
end
silence(temporary_level = Logger::ERROR, &block)
Source:
show
| on GitHub
def silence(temporary_level = Logger::ERROR, &block)
@logger.silence(temporary_level, &block)
end
Source:
show
| on GitHub
def tagged(*new_tags)
tags = current_tags
new_tags = Array.wrap(new_tags).flatten.reject(&:blank?)
tags.concat new_tags
yield
ensure
new_tags.size.times { tags.pop }
end
Instance Protected methods
Source:
show
| on GitHub
def tags_text
tags = current_tags
if tags.any?
tags.collect { |tag| "[#{tag}]" }.join(" ") + " "
end
end