class SemanticLogger::Appender::ElasticsearchHttp

Attributes

index[RW]
type[RW]

Public Class Methods

new(index: "semantic_logger", type: "log", url: "http://localhost:9200", **http_args, &block) click to toggle source

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
Calls superclass method SemanticLogger::Appender::Http::new
# File lib/semantic_logger/appender/elasticsearch_http.rb, line 53
def initialize(index: "semantic_logger",
               type: "log",
               url: "http://localhost:9200",
               **http_args,
               &block)

  @index = index
  @type  = type
  super(url: url, **http_args, &block)

  @request_path = "#{@path.end_with?('/') ? @path : "#{@path}/"}#{@index}-%Y.%m.%d"
  @logging_path = "#{@request_path}/#{type}"
end

Public Instance Methods

delete_all(date = Date.today) click to toggle source

Deletes all log data captured for a day.

# File lib/semantic_logger/appender/elasticsearch_http.rb, line 73
def delete_all(date = Date.today)
  delete(date.strftime(@request_path))
end
log(log) click to toggle source

Log to the index for today.

# File lib/semantic_logger/appender/elasticsearch_http.rb, line 68
def log(log)
  post(formatter.call(log, self), log.time.strftime(@logging_path))
end