Sha256: 3365ff41282273269e0e16159ec9a6c75a95bf3f10cf1f6c1d06468dd727d9c4
Contents?: true
Size: 1.15 KB
Versions: 2
Compression:
Stored size: 1.15 KB
Contents
require_relative 'log_repository' module RTALogger # propagate log records to multiple log repositories class LogPropagator def initialize @semaphore = Mutex.new @records = [] @repositories = [] end attr_reader :repositories def add_log(record) @semaphore.synchronize { @records.push(record.dup) } end def add_log_repository(repository) return unless repository.is_a? RTALogger::LogRepository @repositories.push(repository) unless @repositories.include?(repository) end def load_log_repository(config_json) type = config_json['type'] return if type.to_s.strip.empty? enable = config_json['enable'].nil? ? true : config_json['enable'] return unless enable repository = ::RTALogger::LogFactory.create_repository(type, config_json) add_log_repository(repository) end def drop_all_repositories @semaphore.synchronize { @repositories.clear } end def propagate @semaphore.synchronize do @repositories.each do |repository| repository.add_log_records(@records) end @records.clear end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
RTALogger-1.1.1 | lib/log_propagator.rb |
RTALogger-1.1.0 | lib/log_propagator.rb |