class Logster::BaseStore

Attributes

allow_custom_patterns[RW]
ignore[RW]
level[RW]
max_retention[RW]
skip_empty[RW]

Public Class Methods

new() click to toggle source
# File lib/logster/base_store.rb, line 8
def initialize
  @max_retention = 60 * 60 * 24 * 7
  @skip_empty = true
  @allow_custom_patterns = false
  @patterns_cache = Logster::Cache.new
end

Public Instance Methods

bulk_delete(message_keys, grouping_keys) click to toggle source

Delete messages associated with given message_keys

# File lib/logster/base_store.rb, line 76
def bulk_delete(message_keys, grouping_keys)
  not_implemented
end
bulk_get(message_keys) click to toggle source

Get a group of messages by their message_keys

# File lib/logster/base_store.rb, line 52
def bulk_get(message_keys)
  not_implemented
end
check_rate_limits(severity) click to toggle source

Checks all the existing rate limiters to check if any has been exceeded

# File lib/logster/base_store.rb, line 97
def check_rate_limits(severity)
  not_implemented
end
clear() click to toggle source

Delete all unprotected messages in the store.

# File lib/logster/base_store.rb, line 37
def clear
  not_implemented
end
clear_all() click to toggle source

Delete all messages, including protected messages.

# File lib/logster/base_store.rb, line 42
def clear_all
  not_implemented
end
clear_patterns_cache(key) click to toggle source
# File lib/logster/base_store.rb, line 244
def clear_patterns_cache(key)
  @patterns_cache.clear(key)
end
count() click to toggle source

The number of messages currently stored.

# File lib/logster/base_store.rb, line 32
def count
  not_implemented
end
delete(message_key) click to toggle source
# File lib/logster/base_store.rb, line 71
def delete(message_key)
  not_implemented
end
find_pattern_groups(load_messages: true) click to toggle source

find all pattern groups; returns an array of Logster::Group

# File lib/logster/base_store.rb, line 137
def find_pattern_groups(load_messages: true)
  not_implemented
end
get(message_key, load_env: true) click to toggle source

Get a message by its message_key

# File lib/logster/base_store.rb, line 47
def get(message_key, load_env: true)
  not_implemented
end
get_all_ignore_count() click to toggle source

returns a hash that maps patterns to the number of messages they have suppressed

# File lib/logster/base_store.rb, line 128
def get_all_ignore_count
  not_implemented
end
get_all_messages() click to toggle source

Get all messages that you have in the store

# File lib/logster/base_store.rb, line 57
def get_all_messages
  not_implemented
end
get_env(message_key) click to toggle source

Get a message's env by its message_key

# File lib/logster/base_store.rb, line 62
def get_env(message_key)
  not_implemented
end
get_patterns(set_name) click to toggle source

returns an array of strings each of which must be convertible to regexp

# File lib/logster/base_store.rb, line 112
def get_patterns(set_name)
  not_implemented
end
increment_ignore_count(pattern) click to toggle source

increments the number of messages that have been suppressed by a pattern

# File lib/logster/base_store.rb, line 117
def increment_ignore_count(pattern)
  not_implemented
end
insert_pattern(set_name, pattern) click to toggle source

takes a string as `pattern` and places it under the set `set_name`

# File lib/logster/base_store.rb, line 102
def insert_pattern(set_name, pattern)
  not_implemented
end
protect(message_key) click to toggle source

Mark a message as protected; i.e. it is not deleted by the clear method

# File lib/logster/base_store.rb, line 67
def protect(message_key)
  not_implemented
end
rate_limited?(ip_address, perform: false, limit: 60) click to toggle source
# File lib/logster/base_store.rb, line 132
def rate_limited?(ip_address, perform: false, limit: 60)
  not_implemented
end
register_rate_limit(severities, limit, duration, &block) click to toggle source

Registers a rate limit on the given severities of logs

# File lib/logster/base_store.rb, line 92
def register_rate_limit(severities, limit, duration, &block)
  not_implemented
end
remove_ignore_count(pattern) click to toggle source

removes number of suppressed messages by a pattern

# File lib/logster/base_store.rb, line 122
def remove_ignore_count(pattern)
  not_implemented
end
remove_pattern(set_name, pattern) click to toggle source

takes a string as `pattern` and removes it from the set `set_name`

# File lib/logster/base_store.rb, line 107
def remove_pattern(set_name, pattern)
  not_implemented
end
remove_pattern_group(pattern) click to toggle source

removes the Logster::Group instance associated with the given pattern

# File lib/logster/base_store.rb, line 147
def remove_pattern_group(pattern)
  not_implemented
end
replace_and_bump(message) click to toggle source

Modify the saved message to the given one (identified by message.key) and bump it to the top of the latest list

# File lib/logster/base_store.rb, line 21
def replace_and_bump(message)
  not_implemented
end
report(severity, progname, msg, opts = {}) click to toggle source
# File lib/logster/base_store.rb, line 151
def report(severity, progname, msg, opts = {})
  return if (!msg || (String === msg && msg.empty?)) && skip_empty
  return if level && severity < level

  msg = msg.inspect unless String === msg
  msg = truncate_message(msg)
  message = Logster::Message.new(severity, progname, msg, opts[:timestamp], count: opts[:count])

  env = opts[:env]&.dup || {}
  backtrace = opts[:backtrace]
  if Hash === env && env[:backtrace]
    # Special - passing backtrace through env
    backtrace = env.delete(:backtrace)
  end

  message.populate_from_env(env)

  if backtrace
    if backtrace.respond_to? :join
      backtrace = backtrace.join("\n")
    end
    message.backtrace = backtrace
  else
    message.backtrace = caller.join("\n")
  end

  return if ignore && ignore.any? do |pattern|
    if message =~ pattern
      val = Regexp === pattern ? pattern.inspect : pattern.to_s
      increment_ignore_count(val)
      true
    end
  end

  if Logster.config.enable_custom_patterns_via_ui || allow_custom_patterns
    custom_ignore = @patterns_cache.fetch(Logster::SuppressionPattern::CACHE_KEY) do
      Logster::SuppressionPattern.find_all(store: self)
    end
    return if custom_ignore.any? do |pattern|
      if message =~ pattern
        increment_ignore_count(pattern.inspect)
        true
      end
    end
  end

  similar = nil

  if Logster.config.allow_grouping
    message.apply_message_size_limit(
      Logster.config.maximum_message_size_bytes,
      gems_dir: Logster.config.gems_dir
    )
    key = self.similar_key(message)
    similar = get(key, load_env: false) if key
  end

  message.drop_redundant_envs(Logster.config.max_env_count_per_message)
  message.apply_env_size_limit(Logster.config.max_env_bytes)
  saved = true
  if similar
    similar.merge_similar_message(message)
    replace_and_bump(similar)
    similar
  else
    message.apply_message_size_limit(
      Logster.config.maximum_message_size_bytes,
      gems_dir: Logster.config.gems_dir
    )
    saved = save(message)
    message
  end

  message = similar || message

  if (Logster.config.enable_custom_patterns_via_ui || allow_custom_patterns) && saved
    grouping_patterns = @patterns_cache.fetch(Logster::GroupingPattern::CACHE_KEY) do
      Logster::GroupingPattern.find_all(store: self)
    end

    grouping_patterns.each do |pattern|
      if message =~ pattern
        group = find_pattern_groups() { |pat| pat == pattern }[0]
        group ||= Logster::Group.new(pattern.inspect)
        group.add_message(message)
        save_pattern_group(group) if group.changed?
        break
      end
    end
  end
  message
end
save(message) click to toggle source

Save a new message at the front of the latest list.

# File lib/logster/base_store.rb, line 16
def save(message)
  not_implemented
end
save_pattern_group(group) click to toggle source

saves an instance of Logster::Group

# File lib/logster/base_store.rb, line 142
def save_pattern_group(group)
  not_implemented
end
similar_key(message) click to toggle source

Check if another message with the same grouping_key is already stored. Returns the similar message's message.key

# File lib/logster/base_store.rb, line 27
def similar_key(message)
  not_implemented
end
solve(message_key) click to toggle source

Solve a particular message, causing all old messages with matching version and backtrace to be deleted (report should delete any solved messages when called)

# File lib/logster/base_store.rb, line 87
def solve(message_key)
  not_implemented
end
unprotect(message_key) click to toggle source

Clear the protected mark for a message.

# File lib/logster/base_store.rb, line 81
def unprotect(message_key)
  not_implemented
end

Private Instance Methods

not_implemented() click to toggle source
# File lib/logster/base_store.rb, line 255
def not_implemented
  raise "Not Implemented"
end
truncate_message(msg) click to toggle source
# File lib/logster/base_store.rb, line 250
def truncate_message(msg)
  cap = Logster.config.maximum_message_length
  msg.size <= cap ? msg : msg[0...cap] + "..."
end