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
end
And it’s finally registered as:
ActiveRecord::LogSubscriber.attach_to :active_record
Since 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 =
Colors
"\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 =
Embed in a
::String
to 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