Sha256: d6b12c3c2a0c0c8fbbb8cbcc7d1ff2c31eee46a17cc5bee9cab1a274d95d5570
Contents?: true
Size: 912 Bytes
Versions: 3
Compression:
Stored size: 912 Bytes
Contents
--- title: Rails日志实现探索(3) layout: post category: ruby --- ## 订阅者(接外包)的实现 ### `ActiveSupport::Subscriber` 负责干活的订阅者 ```ruby def start(name, id, payload) e = ActiveSupport::Notifications::Event.new(name, Time.now, nil, id, payload) parent = event_stack.last parent << e if parent event_stack.push e end def finish(name, id, payload) finished = Time.now event = event_stack.pop event.end = finished event.payload.merge!(payload) method = name.split('.').first send(method, event) end ``` ## `ActiveSupport::LogSubscriber < ActiveSupport::Subscriber` ```ruby def start(name, id, payload) super if logger end def finish(name, id, payload) super if logger rescue Exception => e logger.error "Could not log #{name.inspect} event. #{e.class}: #{e.message} #{e.backtrace}" end ``` 这里的 logger 实际是 Rails.logger ##
Version data entries
3 entries across 3 versions & 1 rubygems