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 code
# 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
🔎 See on GitHub
Instance Public methods
flush()
📝 Source code
# File activesupport/lib/active_support/tagged_logging.rb, line 74
def flush
clear_tags!
super if defined?(super)
end
🔎 See on GitHub
tagged(*tags)
📝 Source code
# File activesupport/lib/active_support/tagged_logging.rb, line 70
def tagged(*tags)
formatter.tagged(*tags) { yield self }
end
🔎 See on GitHub