Class: ActiveSupport::TaggedLogging
- Defined in:
- lib/active_support/tagged_logging.rb
Overview
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.
Instance Method Summary collapse
- #add(severity, message = nil, progname = nil, &block) ⇒ Object
- #flush ⇒ Object
-
#initialize(logger) ⇒ TaggedLogging
constructor
A new instance of TaggedLogging.
- #method_missing(method, *args) ⇒ Object
- #silence(temporary_level = Logger::ERROR, &block) ⇒ Object
- #tagged(*new_tags) ⇒ Object
Constructor Details
#initialize(logger) ⇒ TaggedLogging
Returns a new instance of TaggedLogging.
16 17 18 19 |
# File 'lib/active_support/tagged_logging.rb', line 16 def initialize(logger) @logger = logger @tags = Hash.new { |h,k| h[k] = [] } end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object
52 53 54 |
# File 'lib/active_support/tagged_logging.rb', line 52 def method_missing(method, *args) @logger.send(method, *args) end |
Instance Method Details
#add(severity, message = nil, progname = nil, &block) ⇒ Object
35 36 37 |
# File 'lib/active_support/tagged_logging.rb', line 35 def add(severity, = nil, progname = nil, &block) @logger.add(severity, "#{}#{}", progname, &block) end |
#flush ⇒ Object
47 48 49 50 |
# File 'lib/active_support/tagged_logging.rb', line 47 def flush @tags.delete(Thread.current) @logger.flush if @logger.respond_to?(:flush) end |