semantic_logger 4.5.0 → 4.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/Rakefile +7 -7
  4. data/lib/semantic_logger.rb +23 -22
  5. data/lib/semantic_logger/ansi_colors.rb +0 -10
  6. data/lib/semantic_logger/appender.rb +54 -64
  7. data/lib/semantic_logger/appender/async.rb +10 -8
  8. data/lib/semantic_logger/appender/async_batch.rb +4 -2
  9. data/lib/semantic_logger/appender/bugsnag.rb +7 -7
  10. data/lib/semantic_logger/appender/elasticsearch.rb +12 -11
  11. data/lib/semantic_logger/appender/elasticsearch_http.rb +4 -4
  12. data/lib/semantic_logger/appender/file.rb +2 -1
  13. data/lib/semantic_logger/appender/graylog.rb +15 -10
  14. data/lib/semantic_logger/appender/honeybadger.rb +3 -3
  15. data/lib/semantic_logger/appender/http.rb +20 -18
  16. data/lib/semantic_logger/appender/kafka.rb +5 -5
  17. data/lib/semantic_logger/appender/mongodb.rb +6 -6
  18. data/lib/semantic_logger/appender/new_relic.rb +2 -2
  19. data/lib/semantic_logger/appender/rabbitmq.rb +5 -5
  20. data/lib/semantic_logger/appender/sentry.rb +7 -7
  21. data/lib/semantic_logger/appender/splunk.rb +6 -5
  22. data/lib/semantic_logger/appender/splunk_http.rb +3 -3
  23. data/lib/semantic_logger/appender/syslog.rb +12 -12
  24. data/lib/semantic_logger/appender/tcp.rb +9 -9
  25. data/lib/semantic_logger/appender/udp.rb +2 -2
  26. data/lib/semantic_logger/appenders.rb +13 -34
  27. data/lib/semantic_logger/base.rb +43 -31
  28. data/lib/semantic_logger/formatters.rb +11 -11
  29. data/lib/semantic_logger/formatters/base.rb +15 -6
  30. data/lib/semantic_logger/formatters/color.rb +12 -13
  31. data/lib/semantic_logger/formatters/default.rb +18 -5
  32. data/lib/semantic_logger/formatters/fluentd.rb +7 -18
  33. data/lib/semantic_logger/formatters/json.rb +3 -5
  34. data/lib/semantic_logger/formatters/raw.rb +39 -10
  35. data/lib/semantic_logger/formatters/signalfx.rb +14 -21
  36. data/lib/semantic_logger/formatters/syslog.rb +3 -3
  37. data/lib/semantic_logger/formatters/syslog_cee.rb +3 -3
  38. data/lib/semantic_logger/jruby/garbage_collection_logger.rb +4 -2
  39. data/lib/semantic_logger/levels.rb +9 -7
  40. data/lib/semantic_logger/log.rb +49 -73
  41. data/lib/semantic_logger/logger.rb +6 -8
  42. data/lib/semantic_logger/metric/new_relic.rb +3 -3
  43. data/lib/semantic_logger/metric/signalfx.rb +3 -3
  44. data/lib/semantic_logger/metric/statsd.rb +7 -7
  45. data/lib/semantic_logger/processor.rb +7 -5
  46. data/lib/semantic_logger/reporters/minitest.rb +4 -4
  47. data/lib/semantic_logger/semantic_logger.rb +37 -12
  48. data/lib/semantic_logger/subscriber.rb +14 -7
  49. data/lib/semantic_logger/sync.rb +12 -0
  50. data/lib/semantic_logger/sync_processor.rb +43 -0
  51. data/lib/semantic_logger/utils.rb +6 -6
  52. data/lib/semantic_logger/version.rb +1 -1
  53. metadata +5 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34b3b78799e196b270d81aba7deb9b0accd1187a900967a3943dd03301c63199
4
- data.tar.gz: 775b6eeca4ca6b9c38e9213e7f32fee9d179ce36148433dfa91a8630f74873b3
3
+ metadata.gz: 53de576d3dea3ae2099d237648a027026469632dda0f8c3840557c648ddb0626
4
+ data.tar.gz: a2fe41e466fd682cc536f33331698a74b19d9026cde7604db93f859e70686d25
5
5
  SHA512:
6
- metadata.gz: 7cda8a50c62a2dcdb079d5f96cbde61e5cc941c443122a3bbc102a1513bc3686d44a20cca28e7627444bf640a6329035aefc43cb6111a3e6b9cb91411fe33782
7
- data.tar.gz: caf355bf16e08b133fe07ddd6b4cab813b6e7224b3e1f152e1ab54cf30f574fc8665f99ae3938078fb35fcfeea3643d565a814cbe2774d263135c93722147b06
6
+ metadata.gz: c9c53adbda24e55a427945f9c5953c6e53c244af0c00b4f81ba59c92c3e052d9f7306fc8941bbf0960d665757c56b4089bbc1214255fdfc5ec085fdda24b601e
7
+ data.tar.gz: 700143b4c0b34e347539b7b2fccd363683b45577a5520accd55a308175f92975ca041152ca03353f7e23ec71eb9189e6de54ff8f985eecf414d51b8900b2ad96
data/README.md CHANGED
@@ -76,7 +76,7 @@ and are therefore not automatically included by this gem:
76
76
  ## V4 Upgrade notes
77
77
 
78
78
  The following changes need to be made when upgrading to V4:
79
- - Ruby V2.1 / JRuby V9.1 is now the minimum runtime version.
79
+ - Ruby V2.3 / JRuby V9.1 is now the minimum runtime version.
80
80
  - Replace calls to Logger#with_payload with SemanticLogger.named_tagged.
81
81
  - Replace calls to Logger#payload with SemanticLogger.named_tags.
82
82
  - MongoDB Appender requires Mongo Ruby Client V2 or greater.
data/Rakefile CHANGED
@@ -1,22 +1,22 @@
1
- require 'rake/clean'
2
- require 'rake/testtask'
1
+ require "rake/clean"
2
+ require "rake/testtask"
3
3
 
4
- $LOAD_PATH.unshift File.expand_path('lib', __dir__)
5
- require 'semantic_logger/version'
4
+ $LOAD_PATH.unshift File.expand_path("lib", __dir__)
5
+ require "semantic_logger/version"
6
6
 
7
7
  task :gem do
8
- system 'gem build semantic_logger.gemspec'
8
+ system "gem build semantic_logger.gemspec"
9
9
  end
10
10
 
11
11
  task publish: :gem do
12
12
  system "git tag -a v#{SemanticLogger::VERSION} -m 'Tagging #{SemanticLogger::VERSION}'"
13
- system 'git push --tags'
13
+ system "git push --tags"
14
14
  system "gem push semantic_logger-#{SemanticLogger::VERSION}.gem"
15
15
  system "rm semantic_logger-#{SemanticLogger::VERSION}.gem"
16
16
  end
17
17
 
18
18
  Rake::TestTask.new(:test) do |t|
19
- t.pattern = 'test/**/*_test.rb'
19
+ t.pattern = "test/**/*_test.rb"
20
20
  t.verbose = true
21
21
  t.warning = false
22
22
  end
@@ -1,43 +1,44 @@
1
- require 'semantic_logger/core_ext/thread'
2
- require 'semantic_logger/version'
1
+ require "semantic_logger/core_ext/thread"
2
+ require "semantic_logger/version"
3
3
 
4
4
  # @formatter:off
5
5
  module SemanticLogger
6
- autoload :AnsiColors, 'semantic_logger/ansi_colors'
7
- autoload :Appender, 'semantic_logger/appender'
8
- autoload :Appenders, 'semantic_logger/appenders'
9
- autoload :Base, 'semantic_logger/base'
10
- autoload :DebugAsTraceLogger, 'semantic_logger/debug_as_trace_logger'
11
- autoload :Formatters, 'semantic_logger/formatters'
12
- autoload :Levels, 'semantic_logger/levels'
13
- autoload :Log, 'semantic_logger/log'
14
- autoload :Logger, 'semantic_logger/logger'
15
- autoload :Loggable, 'semantic_logger/loggable'
16
- autoload :Processor, 'semantic_logger/processor'
17
- autoload :Subscriber, 'semantic_logger/subscriber'
18
- autoload :Utils, 'semantic_logger/utils'
6
+ autoload :AnsiColors, "semantic_logger/ansi_colors"
7
+ autoload :Appender, "semantic_logger/appender"
8
+ autoload :Appenders, "semantic_logger/appenders"
9
+ autoload :Base, "semantic_logger/base"
10
+ autoload :DebugAsTraceLogger, "semantic_logger/debug_as_trace_logger"
11
+ autoload :Formatters, "semantic_logger/formatters"
12
+ autoload :Levels, "semantic_logger/levels"
13
+ autoload :Log, "semantic_logger/log"
14
+ autoload :Logger, "semantic_logger/logger"
15
+ autoload :Loggable, "semantic_logger/loggable"
16
+ autoload :Processor, "semantic_logger/processor"
17
+ autoload :Subscriber, "semantic_logger/subscriber"
18
+ autoload :SyncProcessor, "semantic_logger/sync_processor"
19
+ autoload :Utils, "semantic_logger/utils"
19
20
 
20
21
  module Concerns
21
- autoload :Compatibility, 'semantic_logger/concerns/compatibility'
22
+ autoload :Compatibility, "semantic_logger/concerns/compatibility"
22
23
  end
23
24
 
24
25
  module Metric
25
- autoload :NewRelic, 'semantic_logger/metric/new_relic'
26
- autoload :Signalfx, 'semantic_logger/metric/signalfx'
27
- autoload :Statsd, 'semantic_logger/metric/statsd'
26
+ autoload :NewRelic, "semantic_logger/metric/new_relic"
27
+ autoload :Signalfx, "semantic_logger/metric/signalfx"
28
+ autoload :Statsd, "semantic_logger/metric/statsd"
28
29
  end
29
30
 
30
31
  module Reporters
31
- autoload :Minitest, 'semantic_logger/reporters/minitest'
32
+ autoload :Minitest, "semantic_logger/reporters/minitest"
32
33
  end
33
34
 
34
35
  if defined?(JRuby)
35
36
  module JRuby
36
- autoload :GarbageCollectionLogger, 'semantic_logger/jruby/garbage_collection_logger'
37
+ autoload :GarbageCollectionLogger, "semantic_logger/jruby/garbage_collection_logger"
37
38
  end
38
39
  end
39
40
  end
40
- require 'semantic_logger/semantic_logger'
41
+ require "semantic_logger/semantic_logger"
41
42
  # @formatter:on
42
43
 
43
44
  # Flush all appenders at exit, waiting for outstanding messages on the queue
@@ -11,15 +11,5 @@ module SemanticLogger
11
11
  MAGENTA = "\e[35m".freeze
12
12
  CYAN = "\e[36m".freeze
13
13
  WHITE = "\e[37m".freeze
14
-
15
- # DEPRECATED - NOT USED
16
- LEVEL_MAP = {
17
- trace: MAGENTA,
18
- debug: GREEN,
19
- info: CYAN,
20
- warn: BOLD,
21
- error: RED,
22
- fatal: RED
23
- }.freeze
24
14
  end
25
15
  end
@@ -1,93 +1,83 @@
1
1
  module SemanticLogger
2
2
  module Appender
3
3
  # @formatter:off
4
- autoload :Async, 'semantic_logger/appender/async'
5
- autoload :AsyncBatch, 'semantic_logger/appender/async_batch'
6
- autoload :Bugsnag, 'semantic_logger/appender/bugsnag'
7
- autoload :Elasticsearch, 'semantic_logger/appender/elasticsearch'
8
- autoload :ElasticsearchHttp, 'semantic_logger/appender/elasticsearch_http'
9
- autoload :File, 'semantic_logger/appender/file'
10
- autoload :Graylog, 'semantic_logger/appender/graylog'
11
- autoload :Honeybadger, 'semantic_logger/appender/honeybadger'
12
- autoload :Kafka, 'semantic_logger/appender/kafka'
13
- autoload :Sentry, 'semantic_logger/appender/sentry'
14
- autoload :Http, 'semantic_logger/appender/http'
15
- autoload :MongoDB, 'semantic_logger/appender/mongodb'
16
- autoload :NewRelic, 'semantic_logger/appender/new_relic'
17
- autoload :Rabbitmq, 'semantic_logger/appender/rabbitmq'
18
- autoload :Splunk, 'semantic_logger/appender/splunk'
19
- autoload :SplunkHttp, 'semantic_logger/appender/splunk_http'
20
- autoload :Syslog, 'semantic_logger/appender/syslog'
21
- autoload :Tcp, 'semantic_logger/appender/tcp'
22
- autoload :Udp, 'semantic_logger/appender/udp'
23
- autoload :Wrapper, 'semantic_logger/appender/wrapper'
4
+ autoload :Async, "semantic_logger/appender/async"
5
+ autoload :AsyncBatch, "semantic_logger/appender/async_batch"
6
+ autoload :Bugsnag, "semantic_logger/appender/bugsnag"
7
+ autoload :Elasticsearch, "semantic_logger/appender/elasticsearch"
8
+ autoload :ElasticsearchHttp, "semantic_logger/appender/elasticsearch_http"
9
+ autoload :File, "semantic_logger/appender/file"
10
+ autoload :Graylog, "semantic_logger/appender/graylog"
11
+ autoload :Honeybadger, "semantic_logger/appender/honeybadger"
12
+ autoload :Kafka, "semantic_logger/appender/kafka"
13
+ autoload :Sentry, "semantic_logger/appender/sentry"
14
+ autoload :Http, "semantic_logger/appender/http"
15
+ autoload :MongoDB, "semantic_logger/appender/mongodb"
16
+ autoload :NewRelic, "semantic_logger/appender/new_relic"
17
+ autoload :Rabbitmq, "semantic_logger/appender/rabbitmq"
18
+ autoload :Splunk, "semantic_logger/appender/splunk"
19
+ autoload :SplunkHttp, "semantic_logger/appender/splunk_http"
20
+ autoload :Syslog, "semantic_logger/appender/syslog"
21
+ autoload :Tcp, "semantic_logger/appender/tcp"
22
+ autoload :Udp, "semantic_logger/appender/udp"
23
+ autoload :Wrapper, "semantic_logger/appender/wrapper"
24
24
  # @formatter:on
25
25
 
26
- # DEPRECATED, use SemanticLogger::AnsiColors
27
- AnsiColors = SemanticLogger::AnsiColors
28
-
29
- # DEPRECATED: use SemanticLogger::Formatters::Color.new
30
- def self.colorized_formatter
31
- SemanticLogger::Formatters::Color.new
32
- end
33
-
34
- # DEPRECATED: use SemanticLogger::Formatters::Json.new
35
- def self.json_formatter
36
- SemanticLogger::Formatters::Json.new
37
- end
38
-
39
26
  # Returns [SemanticLogger::Subscriber] appender for the supplied options
40
- def self.factory(options, &block)
41
- options = options.dup
42
- async = options.delete(:async)
43
- batch = options.delete(:batch)
44
-
45
- # Extract batch and async options
46
- proxy_options = {}
47
- ASYNC_OPTION_KEYS.each { |key| proxy_options[key] = options.delete(key) if options.key?(key) }
48
-
49
- appender = build(options, &block)
27
+ def self.factory(async: false, batch: nil,
28
+ max_queue_size: 10_000, lag_check_interval: 1_000, lag_threshold_s: 30,
29
+ batch_size: 300, batch_seconds: 5,
30
+ **args,
31
+ &block)
32
+ appender = build(**args, &block)
50
33
 
51
34
  # If appender implements #batch, then it should use the batch proxy by default.
52
- batch = true if batch.nil? && appender.respond_to?(:batch)
35
+ batch = true if batch.nil? && appender.respond_to?(:batch)
53
36
 
54
37
  if batch == true
55
- proxy_options[:appender] = appender
56
- Appender::AsyncBatch.new(proxy_options)
38
+ Appender::AsyncBatch.new(
39
+ appender: appender,
40
+ max_queue_size: max_queue_size,
41
+ lag_threshold_s: lag_threshold_s,
42
+ batch_size: batch_size,
43
+ batch_seconds: batch_seconds
44
+ )
57
45
  elsif async == true
58
- proxy_options[:appender] = appender
59
- Appender::Async.new(proxy_options)
60
-
61
-
46
+ Appender::Async.new(
47
+ appender: appender,
48
+ max_queue_size: max_queue_size,
49
+ lag_check_interval: lag_check_interval,
50
+ lag_threshold_s: lag_threshold_s
51
+ )
62
52
  else
63
53
  appender
64
54
  end
65
55
  end
66
56
 
67
- ASYNC_OPTION_KEYS = %i[max_queue_size lag_threshold_s batch_size batch_seconds lag_check_interval].freeze
68
-
69
57
  # Returns [Subscriber] instance from the supplied options.
70
- def self.build(options, &block)
71
- if options[:io] || options[:file_name]
72
- SemanticLogger::Appender::File.new(options, &block)
73
- elsif (appender = options.delete(:appender))
58
+ def self.build(io: nil, file_name: nil, appender: nil, metric: nil, logger: nil, **args, &block)
59
+ if io || file_name
60
+ SemanticLogger::Appender::File.new(io: io, file_name: file_name, **args, &block)
61
+ elsif logger
62
+ SemanticLogger::Appender::Wrapper.new(logger: logger, **args, &block)
63
+ elsif appender
74
64
  if appender.is_a?(Symbol)
75
- SemanticLogger::Utils.constantize_symbol(appender).new(options)
65
+ SemanticLogger::Utils.constantize_symbol(appender).new(**args)
76
66
  elsif appender.is_a?(Subscriber)
77
67
  appender
78
68
  else
79
69
  raise(ArgumentError, "Parameter :appender must be either a Symbol or an object derived from SemanticLogger::Subscriber, not: #{appender.inspect}")
80
70
  end
81
- elsif (appender = options.delete(:metric))
82
- if appender.is_a?(Symbol)
83
- SemanticLogger::Utils.constantize_symbol(appender, 'SemanticLogger::Metric').new(options)
84
- elsif appender.is_a?(Subscriber)
85
- appender
71
+ elsif metric
72
+ if metric.is_a?(Symbol)
73
+ SemanticLogger::Utils.constantize_symbol(metric, "SemanticLogger::Metric").new(**args)
74
+ elsif metric.is_a?(Subscriber)
75
+ metric
86
76
  else
87
77
  raise(ArgumentError, "Parameter :metric must be either a Symbol or an object derived from SemanticLogger::Subscriber, not: #{appender.inspect}")
88
78
  end
89
- elsif options[:logger]
90
- SemanticLogger::Appender::Wrapper.new(options, &block)
79
+ else
80
+ raise(ArgumentError, "To create an appender it must supply one of the following: :io, :file_name, :appender, :metric, or :logger")
91
81
  end
92
82
  end
93
83
 
@@ -1,4 +1,4 @@
1
- require 'forwardable'
1
+ require "forwardable"
2
2
 
3
3
  module SemanticLogger
4
4
  module Appender
@@ -15,6 +15,7 @@ module SemanticLogger
15
15
  def_delegator :@appender, :filter
16
16
  def_delegator :@appender, :host
17
17
  def_delegator :@appender, :application
18
+ def_delegator :@appender, :environment
18
19
  def_delegator :@appender, :level
19
20
  def_delegator :@appender, :level=
20
21
  def_delegator :@appender, :logger
@@ -72,6 +73,7 @@ module SemanticLogger
72
73
  # Starts the worker thread if not running.
73
74
  def thread
74
75
  return @thread if @thread&.alive?
76
+
75
77
  @thread = Thread.new { process }
76
78
  end
77
79
 
@@ -114,21 +116,21 @@ module SemanticLogger
114
116
  # This thread is designed to never go down unless the main thread terminates
115
117
  # or the appender is closed.
116
118
  Thread.current.name = logger.name
117
- logger.trace 'Async: Appender thread active'
119
+ logger.trace "Async: Appender thread active"
118
120
  begin
119
121
  process_messages
120
- rescue StandardError => exception
122
+ rescue StandardError => e
121
123
  # This block may be called after the file handles have been released by Ruby
122
124
  begin
123
- logger.error('Async: Restarting due to exception', exception)
125
+ logger.error("Async: Restarting due to exception", e)
124
126
  rescue StandardError
125
127
  nil
126
128
  end
127
129
  retry
128
- rescue Exception => exception
130
+ rescue Exception => e
129
131
  # This block may be called after the file handles have been released by Ruby
130
132
  begin
131
- logger.error('Async: Stopping due to fatal exception', exception)
133
+ logger.error("Async: Stopping due to fatal exception", e)
132
134
  rescue StandardError
133
135
  nil
134
136
  end
@@ -136,7 +138,7 @@ module SemanticLogger
136
138
  @thread = nil
137
139
  # This block may be called after the file handles have been released by Ruby
138
140
  begin
139
- logger.trace('Async: Thread has stopped')
141
+ logger.trace("Async: Thread has stopped")
140
142
  rescue StandardError
141
143
  nil
142
144
  end
@@ -158,7 +160,7 @@ module SemanticLogger
158
160
  break unless process_message(message)
159
161
  end
160
162
  end
161
- logger.trace 'Async: Queue Closed'
163
+ logger.trace "Async: Queue Closed"
162
164
  end
163
165
 
164
166
  # Returns false when message processing should be stopped
@@ -1,4 +1,4 @@
1
- require 'concurrent'
1
+ require "concurrent"
2
2
 
3
3
  module SemanticLogger
4
4
  module Appender
@@ -42,7 +42,9 @@ module SemanticLogger
42
42
  lag_threshold_s: lag_threshold_s
43
43
  )
44
44
 
45
- raise(ArgumentError, "#{appender.class.name} does not support batching. It must implement #batch") unless appender.respond_to?(:batch)
45
+ return if appender.respond_to?(:batch)
46
+
47
+ raise(ArgumentError, "#{appender.class.name} does not support batching. It must implement #batch")
46
48
  end
47
49
 
48
50
  # Add log message for processing.
@@ -1,7 +1,7 @@
1
1
  begin
2
- require 'bugsnag'
2
+ require "bugsnag"
3
3
  rescue LoadError
4
- raise 'Gem bugsnag is required for logging purposes. Please add the gem "bugsnag" to your Gemfile.'
4
+ raise LoadError, 'Gem bugsnag is required for logging purposes. Please add the gem "bugsnag" to your Gemfile.'
5
5
  end
6
6
 
7
7
  # Send log messages to Bugsnag
@@ -30,7 +30,7 @@ module SemanticLogger
30
30
  # Proc: Only include log messages where the supplied Proc returns true
31
31
  # The Proc must return true or false.
32
32
  def initialize(level: :error, **args, &block)
33
- raise 'Bugsnag only supports :info, :warn, or :error log levels' unless %i[info warn error fatal].include?(level)
33
+ raise "Bugsnag only supports :info, :warn, or :error log levels" unless %i[info warn error fatal].include?(level)
34
34
 
35
35
  # Replace the Bugsnag logger so that we can identify its log messages and not forward them to Bugsnag
36
36
  ::Bugsnag.configure { |config| config.logger = SemanticLogger[Bugsnag] }
@@ -51,7 +51,7 @@ module SemanticLogger
51
51
  # Send an error notification to Bugsnag
52
52
  def log(log)
53
53
  # Ignore logs coming from Bugsnag itself
54
- return false if log.name == 'Bugsnag'
54
+ return false if log.name == "Bugsnag"
55
55
 
56
56
  # Send error messages as Runtime exceptions
57
57
  exception =
@@ -77,11 +77,11 @@ module SemanticLogger
77
77
  def log_level(log)
78
78
  case log.level
79
79
  when :error, :fatal
80
- 'error'
80
+ "error"
81
81
  when :warn
82
- 'warning'
82
+ "warning"
83
83
  else
84
- 'info'
84
+ "info"
85
85
  end
86
86
  end
87
87
  end
@@ -1,10 +1,10 @@
1
1
  begin
2
- require 'elasticsearch'
2
+ require "elasticsearch"
3
3
  rescue LoadError
4
- raise 'Gem elasticsearch is required for logging to Elasticsearch. Please add the gem "elasticsearch" to your Gemfile.'
4
+ raise LoadError, 'Gem elasticsearch is required for logging to Elasticsearch. Please add the gem "elasticsearch" to your Gemfile.'
5
5
  end
6
6
 
7
- require 'date'
7
+ require "date"
8
8
 
9
9
  # Forward all log messages to Elasticsearch.
10
10
  #
@@ -123,14 +123,15 @@ module SemanticLogger
123
123
  # send_get_body_as [String]
124
124
  # Specify the HTTP method to use for GET requests with a body.
125
125
  # Default: 'GET'
126
- def initialize(url: 'http://localhost:9200',
127
- index: 'semantic_logger',
128
- date_pattern: '%Y.%m.%d',
129
- type: 'log',
126
+ def initialize(url: "http://localhost:9200",
127
+ index: "semantic_logger",
128
+ date_pattern: "%Y.%m.%d",
129
+ type: "log",
130
130
  level: nil,
131
131
  formatter: nil,
132
132
  filter: nil,
133
133
  application: nil,
134
+ environment: nil,
134
135
  host: nil,
135
136
  metrics: false,
136
137
  **elasticsearch_args,
@@ -144,7 +145,7 @@ module SemanticLogger
144
145
  @elasticsearch_args[:url] = url if url && !elasticsearch_args[:hosts]
145
146
  @elasticsearch_args[:logger] = logger
146
147
 
147
- super(level: level, formatter: formatter, filter: filter, application: application, host: host, metrics: false, &block)
148
+ super(level: level, formatter: formatter, filter: filter, application: application, environment: environment, host: host, metrics: false, &block)
148
149
  reopen
149
150
  end
150
151
 
@@ -173,15 +174,15 @@ module SemanticLogger
173
174
 
174
175
  def write_to_elasticsearch(messages)
175
176
  bulk_result = @client.bulk(body: messages)
176
- return unless bulk_result['errors']
177
+ return unless bulk_result["errors"]
177
178
 
178
- failed = bulk_result['items'].reject { |x| x['status'] == 201 }
179
+ failed = bulk_result["items"].reject { |x| x["status"] == 201 }
179
180
  logger.error("ElasticSearch: Write failed. Messages discarded. : #{failed}")
180
181
  end
181
182
 
182
183
  def bulk_index(log)
183
184
  expanded_index_name = log.time.strftime("#{index}-#{date_pattern}")
184
- {'index' => {'_index' => expanded_index_name, '_type' => type}}
185
+ {"index" => {"_index" => expanded_index_name, "_type" => type}}
185
186
  end
186
187
 
187
188
  def default_formatter