Class: SemanticLogger::Appender::Splunk
- Defined in:
- lib/semantic_logger/appender/splunk.rb
Overview
Splunk log appender.
Use the official splunk gem to log messages to Splunk.
Example
SemanticLogger.add_appender(
appender: :splunk,
username: 'username',
password: 'password',
host: 'localhost',
port: 8089,
scheme: :https,
index: 'main'
)
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#index ⇒ Object
readonly
Returns the value of attribute index.
-
#service ⇒ Object
readonly
Returns the value of attribute service.
-
#service_index ⇒ Object
readonly
Returns the value of attribute service_index.
Attributes inherited from Base
Attributes inherited from Base
Instance Method Summary collapse
-
#call(log, _logger) ⇒ Object
Returns [String] JSON to send to Splunk For splunk format requirements see: dev.splunk.com/view/event-collector/SP-CAAAE6P.
-
#initialize(options, _deprecated_level = nil, &block) ⇒ Splunk
constructor
Write to Splunk.
-
#log(log) ⇒ Object
Log the message to Splunk.
-
#reopen ⇒ Object
After forking an active process call #reopen to re-open open the handles to resources.
Methods inherited from Base
colorized_formatter, #default_formatter, #flush, json_formatter, #level
Methods inherited from Base
#fast_tag, #level, #level=, #measure, #payload, #pop_tags, #push_tags, #silence, #tagged, #tags, #with_payload
Constructor Details
#initialize(options, _deprecated_level = nil, &block) ⇒ Splunk
Write to Splunk.
Parameters
:username [String]
User name to log into splunk with.
Not required if :token has been supplied.
:password [String]
Password to log into splunk with.
Not required if :token has been supplied.
:token
Supply a preauthenticated Splunk token instead of username and password.
Not required if username and password are supplied.
:host [String]
Splunk host name.
Default: 'localhost'
:port [Integer]
The Splunk management port.
Default: 8089
:scheme [Symbol]
Either :https or :http
Default: :https
:index [String]
Splunk index to use.
Default: 'main'
:namespace [Namespace]
Application namespace instance.
:ssl_client_cert [OpenSSL::X509::Certificate]
Client certificate.
:ssl_client_key [OpenSSL::PKey::RSA | OpenSSL::PKey::DSA]
Client key.
level: [:trace | :debug | :info | :warn | :error | :fatal]
Override the log level for this appender.
Default: SemanticLogger.default_level
formatter: [Object|Proc]
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 where the class name matches the supplied.
regular expression. All other will be ignored.
Proc: Only include log where the supplied Proc returns true
The Proc must return true or false.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/semantic_logger/appender/splunk.rb', line 78 def initialize(, _deprecated_level = nil, &block) @config = .dup @config[:level] = _deprecated_level if _deprecated_level @index = @config.delete(:index) || 'main' = { level: @config.delete(:level) || :error, formatter: @config.delete(:formatter), filter: @config.delete(:filter) } reopen # Pass on the level and custom formatter if supplied super(, &block) end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
22 23 24 |
# File 'lib/semantic_logger/appender/splunk.rb', line 22 def config @config end |
#index ⇒ Object (readonly)
Returns the value of attribute index.
22 23 24 |
# File 'lib/semantic_logger/appender/splunk.rb', line 22 def index @index end |
#service ⇒ Object (readonly)
Returns the value of attribute service.
22 23 24 |
# File 'lib/semantic_logger/appender/splunk.rb', line 22 def service @service end |
#service_index ⇒ Object (readonly)
Returns the value of attribute service_index.
22 23 24 |
# File 'lib/semantic_logger/appender/splunk.rb', line 22 def service_index @service_index end |
Instance Method Details
#call(log, _logger) ⇒ Object
Returns [String] JSON to send to Splunk For splunk format requirements see:
http://dev.splunk.com/view/event-collector/SP-CAAAE6P
116 117 118 119 120 121 122 123 |
# File 'lib/semantic_logger/appender/splunk.rb', line 116 def call(log, _logger) h = log.to_h h.delete(:message) h.delete(:application) h.delete(:host) h.delete(:time) h end |
#log(log) ⇒ Object
Log the message to Splunk
106 107 108 109 110 111 |
# File 'lib/semantic_logger/appender/splunk.rb', line 106 def log(log) return false unless should_log?(log) service_index.submit(log., formatter.call(log, self)) true end |
#reopen ⇒ Object
After forking an active process call #reopen to re-open open the handles to resources
97 98 99 100 101 102 103 |
# File 'lib/semantic_logger/appender/splunk.rb', line 97 def reopen # Connect to splunk. Connect is a synonym for creating a Service by hand and calling login. self.service = Splunk::connect(config) # The index we are logging to self.service_index = service.indexes[index] end |