Class: SemanticLogger::Appender::SplunkHttp
- Inherits:
-
Http
- Object
- Base
- Subscriber
- Http
- SemanticLogger::Appender::SplunkHttp
- Defined in:
- lib/semantic_logger/appender/splunk_http.rb
Overview
)
Instance Attribute Summary
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
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, &block) ⇒ SplunkHttp
constructor
Create Splunk appender over persistent HTTP(S).
Methods inherited from Http
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) ⇒ SplunkHttp
Create Splunk appender over persistent HTTP(S)
Parameters:
token: [String]
Token created in Splunk for this HTTP Appender
Mandatory.
source_type: [String]
Optional: Source type to display in Splunk
index: [String]
Optional: Name of a valid index for this message in Splunk.
url: [String]
Valid URL to post to.
Example: http://example.com
To enable SSL include https in the URL.
Example: https://example.com
verify_mode will default: OpenSSL::SSL::VERIFY_PEER
application: [String]
Name of this application to appear in log messages.
Default: SemanticLogger.application
host: [String]
Name of this host to appear in log messages.
Default: SemanticLogger.host
compress: [true|false]
Whether to compress the JSON string with GZip.
Default: true
ssl: [Hash]
Specific SSL options: For more details see NET::HTTP.start
ca_file, ca_path, cert, cert_store, ciphers, key, open_timeout, read_timeout, ssl_timeout,
ssl_version, use_ssl, verify_callback, verify_depth and verify_mode.
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 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.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/semantic_logger/appender/splunk_http.rb', line 67 def initialize(, &block) = .dup @source_type = .delete(:source_type) @index = .delete(:index) token = .delete(:token) raise(ArgumentError, 'Missing mandatory parameter :token') unless token # Splunk supports HTTP Compression, enable by default [:compress] = true unless .key?(:compress) super(, &block) @header['Authorization'] = "Splunk #{token}" 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
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/semantic_logger/appender/splunk_http.rb', line 85 def call(log, logger) h = log.to_h(nil, nil) h.delete(:time) = { source: logger.application, host: logger.host, time: log.time.utc.to_f, event: h } [:source_type] = @source_type if @source_type [:index] = @index if @index # Render to JSON .to_json end |