class Logster::Group
Constants
- GroupWeb
- MAX_SIZE
Attributes
changed[RW]
count[RW]
key[R]
messages[R]
messages_keys[R]
pattern[RW]
timestamp[R]
Public Class Methods
from_json(json)
click to toggle source
# File lib/logster/group.rb, line 18 def self.from_json(json) hash = JSON.parse(json) group = new( hash["key"], hash["messages_keys"], timestamp: hash["timestamp"] || 0, count: hash["count"] || 0 ) group.changed = false group end
max_size()
click to toggle source
# File lib/logster/group.rb, line 30 def self.max_size (defined?(@max_size) && @max_size) || MAX_SIZE end
new(key, messages_keys = [], timestamp: 0, count: 0)
click to toggle source
# File lib/logster/group.rb, line 10 def initialize(key, messages_keys = [], timestamp: 0, count: 0) @key = key @messages_keys = messages_keys || [] @timestamp = timestamp @count = count @changed = true end
Public Instance Methods
add_message(message)
click to toggle source
# File lib/logster/group.rb, line 58 def add_message(message) if !@messages_keys.include?(message.key) @messages_keys.unshift(message.key) @count += 1 @changed = true end if @timestamp < message.timestamp @timestamp = message.timestamp @messages_keys.unshift(@messages_keys.slice!(@messages_keys.index(message.key))) @changed = true end if self.count > max_size @messages_keys.slice!(max_size..-1) @changed = true end end
changed?()
click to toggle source
# File lib/logster/group.rb, line 104 def changed? @changed end
messages=(messages)
click to toggle source
# File lib/logster/group.rb, line 83 def messages=(messages) messages.compact! messages.uniq!(&:key) if messages.size > 0 messages.sort_by!(&:timestamp) messages.reverse! messages.slice!(max_size..-1) if messages.size > max_size @messages = messages before = @messages_keys.sort @messages_keys = @messages.map(&:key) @timestamp = @messages[0].timestamp @changed = before != @messages_keys.sort else @messages_keys = [] @messages = [] @timestamp = 0 @changed = true end @messages end
remove_message(message)
click to toggle source
# File lib/logster/group.rb, line 75 def remove_message(message) index = @messages_keys.index(message.key) if index @messages_keys.slice!(index) @changed = true end end
to_h()
click to toggle source
# File lib/logster/group.rb, line 34 def to_h { key: @key, messages_keys: @messages_keys, timestamp: @timestamp, count: @count } end
to_h_web()
click to toggle source
# File lib/logster/group.rb, line 43 def to_h_web { regex: @key, count: @count, timestamp: @timestamp, messages: @messages, severity: -1, group: true } end
to_json(opts = nil)
click to toggle source
# File lib/logster/group.rb, line 54 def to_json(opts = nil) JSON.fast_generate(self.to_h, opts) end
Private Instance Methods
max_size()
click to toggle source
# File lib/logster/group.rb, line 110 def max_size self.class.max_size end