Wraps any standard Logger
object to provide tagging capabilities.
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
Class Public methods
new(logger)
Source:
# File activesupport/lib/active_support/tagged_logging.rb, line 61
def self.new(logger)
# Ensure we set a default formatter so we aren't extending nil!
logger.formatter ||= ActiveSupport::Logger::SimpleFormatter.new
logger.formatter.extend Formatter
logger.extend(self)
end
Instance Public methods
flush()
Source:
# File activesupport/lib/active_support/tagged_logging.rb, line 74
def flush
clear_tags!
super if defined?(super)
end
tagged(*tags)
Source:
# File activesupport/lib/active_support/tagged_logging.rb, line 70
def tagged(*tags)
formatter.tagged(*tags) { yield self }
end