Class: ActiveSupport::LogSubscriber
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
ActionController::LogSubscriber, ActionMailer::LogSubscriber, ActionView::LogSubscriber, ActiveRecord::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 47"\e[34m"
-
BOLD =
# File 'activesupport/lib/active_support/log_subscriber.rb', line 40"\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 49"\e[36m"
-
GREEN =
# File 'activesupport/lib/active_support/log_subscriber.rb', line 45"\e[32m"
-
MAGENTA =
# File 'activesupport/lib/active_support/log_subscriber.rb', line 48"\e[35m"
-
RED =
# File 'activesupport/lib/active_support/log_subscriber.rb', line 44"\e[31m"
-
WHITE =
# File 'activesupport/lib/active_support/log_subscriber.rb', line 50"\e[37m"
-
YELLOW =
# File 'activesupport/lib/active_support/log_subscriber.rb', line 46"\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 |
Instance Attribute Summary
Instance Method Summary
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 52
mattr_accessor :colorize_logging
.logger (rw)
[ GitHub ].logger=(value) (rw)
[ GitHub ]# File 'activesupport/lib/active_support/log_subscriber.rb', line 62
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 64
def log_subscribers subscribers end
Instance Attribute Details
#colorize_logging (rw)
[ GitHub ]# File 'activesupport/lib/active_support/log_subscriber.rb', line 52
mattr_accessor :colorize_logging
Instance Method Details
#finish(name, id, payload)
[ GitHub ]#logger
[ GitHub ]# File 'activesupport/lib/active_support/log_subscriber.rb', line 74
def logger LogSubscriber.logger end
#start(name, id, payload)
[ GitHub ]# File 'activesupport/lib/active_support/log_subscriber.rb', line 78
def start(name, id, payload) super if logger end