Class: SemanticLogger::Appender::Elasticsearch

Inherits:
Http show all
Defined in:
lib/semantic_logger/appender/elasticsearch.rb

Overview

)

Instance Attribute Summary collapse

Attributes inherited from Http

#application, #compress, #continue_timeout, #header, #host, #http, #open_timeout, #path, #port, #read_timeout, #server, #ssl_options, #url, #username

Attributes inherited from Subscriber

#application, #formatter, #host

Attributes inherited from Base

#filter, #name

Instance Method Summary collapse

Methods inherited from Http

#reopen

Methods inherited from Subscriber

#close, #default_formatter, #flush, #level

Methods inherited from Base

#fast_tag, #level, #level=, #measure, #payload, #pop_tags, #push_tags, #silence, #tagged, #tags, #with_payload

Constructor Details

#initialize(options, &block) ⇒ Elasticsearch

Create Elasticsearch appender over persistent HTTP(S)

Parameters:

index: [String]
  Prefix of the index to store the logs in Elasticsearch.
  The final index appends the date so that indexes are used per day.
    I.e. The final index will look like 'semantic_logger-YYYY.MM.DD'
  Default: 'semantic_logger'

type: [String]
  Document type to associate with logs when they are written.
  Default: 'log'

level: [:trace | :debug | :info | :warn | :error | :fatal]
  Override the log level for this appender.
  Default: SemanticLogger.default_level

formatter: [Object|Proc|Symbol|Hash]
  An instance of a class that implements #call, or a Proc to be used to format
  the output from this appender
  Default: Use the built-in formatter (See: #call)

filter: [Regexp|Proc]
  RegExp: Only include log messages where the class name matches the supplied.
  regular expression. All other messages will be ignored.
  Proc: Only include log messages where the supplied Proc returns true
        The Proc must return true or false.

host: [String]
  Name of this host to appear in log messages.
  Default: SemanticLogger.host

application: [String]
  Name of this application to appear in log messages.
  Default: SemanticLogger.application


47
48
49
50
51
52
53
54
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 47

def initialize(options, &block)
  options       = options.dup
  @index        = options.delete(:index) || 'semantic_logger'
  @type         = options.delete(:type) || 'log'
  options[:url] ||= 'http://localhost:9200'

  super(options, &block)
end

Instance Attribute Details

#indexObject

Returns the value of attribute index.



10
11
12
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 10

def index
  @index
end

#typeObject

Returns the value of attribute type.



10
11
12
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 10

def type
  @type
end

Instance Method Details

#delete_all(date = Date.today) ⇒ Object

Deletes all log data captured for a day



64
65
66
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 64

def delete_all(date = Date.today)
  "#{index}-#{date.strftime('%Y.%m.%d')}/#{type}"
end

#log(log) ⇒ Object

Log to the index for today



57
58
59
60
61
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 57

def log(log)
  return false unless should_log?(log)

  post(formatter.call(log, self), "#{index}-#{log.time.strftime('%Y.%m.%d')}/#{type}")
end