Class: SemanticLogger::Appender::Elasticsearch
- Inherits:
-
Subscriber
- Object
- Base
- Subscriber
- SemanticLogger::Appender::Elasticsearch
- Defined in:
- lib/semantic_logger/appender/elasticsearch.rb
Instance Attribute Summary collapse
-
#batch_size ⇒ Object
Returns the value of attribute batch_size.
-
#client ⇒ Object
Returns the value of attribute client.
-
#elasticsearch_args ⇒ Object
Returns the value of attribute elasticsearch_args.
-
#flush_interval ⇒ Object
Returns the value of attribute flush_interval.
-
#index ⇒ Object
Returns the value of attribute index.
-
#timeout_interval ⇒ Object
Returns the value of attribute timeout_interval.
-
#type ⇒ Object
Returns the value of attribute type.
-
#url ⇒ Object
Returns the value of attribute url.
Attributes inherited from Subscriber
#application, #formatter, #host, #logger, #metrics
Attributes inherited from Base
Instance Method Summary collapse
- #batch(logs) ⇒ Object
-
#initialize(url: 'http://localhost:9200', index: 'semantic_logger', type: 'log', level: nil, formatter: nil, filter: nil, application: nil, host: nil, metrics: false, **elasticsearch_args, &block) ⇒ Elasticsearch
constructor
Create Elasticsearch appender over persistent HTTP(S).
-
#log(log) ⇒ Object
Log to the index for today.
- #reopen ⇒ Object
Methods inherited from Subscriber
#close, #flush, #level, #should_log?
Methods inherited from Base
#backtrace, #fast_tag, #level, #level=, #measure, #named_tags, #payload, #pop_tags, #push_tags, #should_log?, #silence, #tagged, #tags, #with_payload
Constructor Details
#initialize(url: 'http://localhost:9200', index: 'semantic_logger', type: 'log', level: nil, formatter: nil, filter: nil, application: nil, host: nil, metrics: false, **elasticsearch_args, &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: :raw_json (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
Elasticsearch Parameters:
url: [String]
Fully qualified address to the Elasticsearch service.
Default: 'http://localhost:9200'
hosts: [String|Hash|Array]
Single host passed as a String or Hash, or multiple hosts
passed as an Array; `host` or `url` keys are also valid.
Note:
:url above is ignored when supplying this option.
resurrect_after [Float]
After how many seconds a dead connection should be tried again.
reload_connections [true|false|Integer]
Reload connections after X requests.
Default: false
randomize_hosts [true|false]
Shuffle connections on initialization and reload.
Default: false
sniffer_timeout [Integer]
Timeout for reloading connections in seconds.
Default: 1
retry_on_failure [true|false|Integer]
Retry X times when request fails before raising and exception.
Default: false
retry_on_status [Array<Number>]
Retry when specific status codes are returned.
reload_on_failure [true|false]
Reload connections after failure.
Default: false
request_timeout [Integer]
The request timeout to be passed to transport in options.
adapter [Symbol]
A specific adapter for Faraday (e.g. `:patron`)
transport_options [Hash]
Options to be passed to the `Faraday::Connection` constructor.
transport_class [Constant]
A specific transport class to use, will be initialized by
the client and passed hosts and all arguments.
transport [Object]
A specific transport instance.
serializer_class [Constant]
A specific serializer class to use, will be initialized by
the transport and passed the transport instance.
selector [Elasticsearch::Transport::Transport::Connections::Selector::Base]
An instance of selector strategy derived from `Elasticsearch::Transport::Transport::Connections::Selector::Base`.
send_get_body_as [String]
Specify the HTTP method to use for GET requests with a body.
Default: 'GET'
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 121 def initialize(url: 'http://localhost:9200', index: 'semantic_logger', type: 'log', level: nil, formatter: nil, filter: nil, application: nil, host: nil, metrics: false, **elasticsearch_args, &block) @url = url @index = index @type = type @elasticsearch_args = elasticsearch_args.dup @elasticsearch_args[:url] = url if url && !elasticsearch_args[:hosts] @elasticsearch_args[:logger] = logger super(level: level, formatter: formatter, filter: filter, application: application, host: host, metrics: false, &block) reopen end |
Instance Attribute Details
#batch_size ⇒ Object
Returns the value of attribute batch_size.
20 21 22 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 20 def batch_size @batch_size end |
#client ⇒ Object
Returns the value of attribute client.
20 21 22 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 20 def client @client end |
#elasticsearch_args ⇒ Object
Returns the value of attribute elasticsearch_args.
20 21 22 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 20 def elasticsearch_args @elasticsearch_args end |
#flush_interval ⇒ Object
Returns the value of attribute flush_interval.
20 21 22 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 20 def flush_interval @flush_interval end |
#index ⇒ Object
Returns the value of attribute index.
20 21 22 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 20 def index @index end |
#timeout_interval ⇒ Object
Returns the value of attribute timeout_interval.
20 21 22 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 20 def timeout_interval @timeout_interval end |
#type ⇒ Object
Returns the value of attribute type.
20 21 22 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 20 def type @type end |
#url ⇒ Object
Returns the value of attribute url.
20 21 22 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 20 def url @url end |
Instance Method Details
#batch(logs) ⇒ Object
155 156 157 158 159 160 161 162 163 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 155 def batch(logs) = [] logs.each do |log| << bulk_index(log) << formatter.call(log, self) end write_to_elasticsearch() true end |
#log(log) ⇒ Object
Log to the index for today
149 150 151 152 153 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 149 def log(log) bulk_payload = formatter.call(log, self) write_to_elasticsearch([bulk_index(log), bulk_payload]) true end |
#reopen ⇒ Object
144 145 146 |
# File 'lib/semantic_logger/appender/elasticsearch.rb', line 144 def reopen @client = ::Elasticsearch::Client.new(@elasticsearch_args) end |