Sha256: b725552f1851a0ece6377b7761944c4a1cd1cdae1681b43e65280a2351ca989a
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
# frozen_string_literal: true require "zlib" class FullRequestLogger::Recorder attr_reader :redis def self.instance @instance ||= new end def initialize @redis = Redis.new FullRequestLogger.redis end def attach_to(logger) logger.extend ActiveSupport::Logger.broadcast( ActiveSupport::Logger.new(self) ) end def write(message) messages << remove_ansi_colors(message) end def log messages.join.strip end def flush(request_id) if (log_to_be_flushed = log).present? redis.setex \ request_key(request_id), FullRequestLogger.ttl, compress(log_to_be_flushed) end ensure messages.clear end def retrieve(request_id) if log = redis.get(request_key(request_id)) uncompress(log).force_encoding("utf-8") end end # no-op needed for Logger to treat this as a valid log device def close redis.disconnect! end private def messages Thread.current[:full_request_logger_messages] ||= [] end def remove_ansi_colors(message) message.remove(/\e\[\d+m/) end def request_key(id) "full_request_logger/requests/#{id}" end def compress(text) Zlib::Deflate.deflate(text) end def uncompress(text) Zlib::Inflate.inflate(text) end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
full_request_logger-0.1 | lib/full_request_logger/recorder.rb |