Class: ActiveSupport::LogSubscriber
| Relationships & Source Files | |
| Namespace Children | |
| Modules: | |
| Extension / Inclusion / Inheritance Descendants | |
| Subclasses: 
          ActionController::LogSubscriber, ActionMailer::LogSubscriber, ActionView::LogSubscriber, ActiveRecord::LogSubscriber, ActiveStorage::LogSubscriber, ActiveJob::Logging::LogSubscriber, Rails::Rack::Logger
         | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
           Subscriber | |
| Instance Chain: 
          self,
           Subscriber | |
| Inherits: | ActiveSupport::Subscriber 
 | 
| Defined in: | activesupport/lib/active_support/log_subscriber.rb, activesupport/lib/active_support/log_subscriber/test_helper.rb | 
Overview
LogSubscriber is an object set to consume Notifications with the sole purpose of logging them. The log subscriber dispatches notifications to a registered object based on its given namespace.
An example would be Active Record log subscriber responsible for logging queries:
module ActiveRecord
  class LogSubscriber < ActiveSupport::LogSubscriber
    def sql(event)
      "#{event.payload[:name]} (#{event.duration}) #{event.payload[:sql]}"
    end
  end
endAnd it’s finally registered as:
ActiveRecord::LogSubscriber.attach_to :active_recordSince we need to know all instance methods before attaching the log subscriber, the line above should be called after your ::ActiveRecord::LogSubscriber definition.
After configured, whenever a “sql.active_record” notification is published, it will properly dispatch the event (ActiveSupport::Notifications::Event) to the sql method.
Log subscriber also has some helpers to deal with logging and automatically flushes all logs when the request finishes (via action_dispatch.callback notification) in a ::Rails environment.
Constant Summary
- 
    BLACK =
    # File 'activesupport/lib/active_support/log_subscriber.rb', line 45Colors "\e[30m"
- 
    BLUE =
    
 # File 'activesupport/lib/active_support/log_subscriber.rb', line 49"\e[34m"
- 
    BOLD =
    
 # File 'activesupport/lib/active_support/log_subscriber.rb', line 42"\e[1m"
- 
    CLEAR =
    # File 'activesupport/lib/active_support/log_subscriber.rb', line 41Embed in a ::Stringto clear all previous ANSI sequences."\e[0m"
- 
    CYAN =
    
 # File 'activesupport/lib/active_support/log_subscriber.rb', line 51"\e[36m"
- 
    GREEN =
    
 # File 'activesupport/lib/active_support/log_subscriber.rb', line 47"\e[32m"
- 
    MAGENTA =
    
 # File 'activesupport/lib/active_support/log_subscriber.rb', line 50"\e[35m"
- 
    RED =
    
 # File 'activesupport/lib/active_support/log_subscriber.rb', line 46"\e[31m"
- 
    WHITE =
    
 # File 'activesupport/lib/active_support/log_subscriber.rb', line 52"\e[37m"
- 
    YELLOW =
    
 # File 'activesupport/lib/active_support/log_subscriber.rb', line 48"\e[33m"
Class Attribute Summary
- .colorize_logging (also: #colorize_logging) rw
- .logger rw
- .logger=(value) rw
Class Method Summary
- 
    
      .flush_all!  
    
    Flush all log_subscribers’ logger. 
- .log_subscribers
Subscriber - Inherited
| .attach_to | Attach the subscriber to a namespace. | 
| .method_added | Adds event subscribers for all new methods added to the class. | 
| .new, .subscribers, .add_event_subscriber | |
Instance Attribute Summary
Instance Method Summary
- #finish(name, id, payload)
- #logger
- #start(name, id, payload)
- 
    
      #color(text, color, bold = false)  
    
    private
    Set color by using a symbol or one of the defined constants. 
Subscriber - Inherited
Constructor Details
This class inherits a constructor from ActiveSupport::Subscriber
Class Attribute Details
.colorize_logging (rw) Also known as: #colorize_logging
[ GitHub ]# File 'activesupport/lib/active_support/log_subscriber.rb', line 54
mattr_accessor :colorize_logging, default: true
.logger (rw)
[ GitHub ].logger=(value) (rw)
[ GitHub ]# File 'activesupport/lib/active_support/log_subscriber.rb', line 63
attr_writer :logger
Class Method Details
.flush_all!
Flush all log_subscribers’ logger.
.log_subscribers
[ GitHub ]# File 'activesupport/lib/active_support/log_subscriber.rb', line 65
def log_subscribers subscribers end
Instance Attribute Details
#colorize_logging (rw)
[ GitHub ]# File 'activesupport/lib/active_support/log_subscriber.rb', line 54
mattr_accessor :colorize_logging, default: true
Instance Method Details
#color(text, color, bold = false) (private)
# File 'activesupport/lib/active_support/log_subscriber.rb', line 105
def color(text, color, bold = false) # :doc: return text unless colorize_logging color = self.class.const_get(color.upcase) if color.is_a?(Symbol) bold = bold ? BOLD : "" "#{bold}#{color}#{text}#{CLEAR}" end
#finish(name, id, payload)
[ GitHub ]#logger
[ GitHub ]# File 'activesupport/lib/active_support/log_subscriber.rb', line 75
def logger LogSubscriber.logger end
#start(name, id, payload)
[ GitHub ]# File 'activesupport/lib/active_support/log_subscriber.rb', line 79
def start(name, id, payload) super if logger end