Class: Services::Logger::Redis
- Inherits:
-
Object
- Object
- Services::Logger::Redis
- Defined in:
- lib/services/logger/redis.rb
Constant Summary collapse
- META_CLASSES =
[ NilClass, TrueClass, FalseClass, Symbol, String, Numeric ].freeze
- InvalidMetaError =
Class.new(StandardError)
- EmptyResponseFromRedisMultiError =
Class.new(StandardError)
Instance Method Summary collapse
- #clear ⇒ Object
- #fetch ⇒ Object
-
#initialize(redis, key = 'logs') ⇒ Redis
constructor
A new instance of Redis.
- #log(message, meta = {}, severity = 'info') ⇒ Object
- #size ⇒ Object
Constructor Details
#initialize(redis, key = 'logs') ⇒ Redis
Returns a new instance of Redis.
16 17 18 |
# File 'lib/services/logger/redis.rb', line 16 def initialize(redis, key = 'logs') @redis, @key = redis, key end |
Instance Method Details
#clear ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/services/logger/redis.rb', line 41 def clear response = 3.tries on: EmptyResponseFromRedisMultiError do @redis.multi do @redis.lrange @key, 0, -1 @redis.del @key end or raise EmptyResponseFromRedisMultiError end response.first.map(&method(:log_entry_from_json)) end |
#fetch ⇒ Object
37 38 39 |
# File 'lib/services/logger/redis.rb', line 37 def fetch @redis.lrange(@key, 0, -1).map(&method(:log_entry_from_json)) end |
#log(message, meta = {}, severity = 'info') ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/services/logger/redis.rb', line 20 def log(, = {}, severity = 'info') # Allow only simple data types in meta raise InvalidMetaError, "Meta keys and values must be of one of the following classes: #{META_CLASSES.join(', ')}" if () value = { time: Time.now.to_i, message: .to_s, severity: severity.to_s, meta: } @redis.lpush @key, value.to_json end |
#size ⇒ Object
33 34 35 |
# File 'lib/services/logger/redis.rb', line 33 def size @redis.llen @key end |