semantic_logger 4.6.1 → 4.10.0

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +50 -20
  3. data/Rakefile +7 -7
  4. data/lib/semantic_logger/appender/async.rb +10 -9
  5. data/lib/semantic_logger/appender/async_batch.rb +7 -3
  6. data/lib/semantic_logger/appender/bugsnag.rb +43 -30
  7. data/lib/semantic_logger/appender/elasticsearch.rb +32 -14
  8. data/lib/semantic_logger/appender/elasticsearch_http.rb +4 -4
  9. data/lib/semantic_logger/appender/file.rb +249 -67
  10. data/lib/semantic_logger/appender/graylog.rb +12 -10
  11. data/lib/semantic_logger/appender/honeybadger.rb +3 -3
  12. data/lib/semantic_logger/appender/http.rb +20 -18
  13. data/lib/semantic_logger/appender/io.rb +68 -0
  14. data/lib/semantic_logger/appender/kafka.rb +9 -5
  15. data/lib/semantic_logger/appender/mongodb.rb +6 -6
  16. data/lib/semantic_logger/appender/new_relic.rb +2 -2
  17. data/lib/semantic_logger/appender/rabbitmq.rb +5 -5
  18. data/lib/semantic_logger/appender/sentry.rb +7 -7
  19. data/lib/semantic_logger/appender/sentry_ruby.rb +138 -0
  20. data/lib/semantic_logger/appender/splunk.rb +6 -5
  21. data/lib/semantic_logger/appender/splunk_http.rb +6 -6
  22. data/lib/semantic_logger/appender/syslog.rb +23 -15
  23. data/lib/semantic_logger/appender/tcp.rb +5 -5
  24. data/lib/semantic_logger/appender/udp.rb +2 -2
  25. data/lib/semantic_logger/appender/wrapper.rb +3 -2
  26. data/lib/semantic_logger/appender.rb +42 -36
  27. data/lib/semantic_logger/appenders.rb +34 -30
  28. data/lib/semantic_logger/base.rb +57 -27
  29. data/lib/semantic_logger/formatters/base.rb +9 -3
  30. data/lib/semantic_logger/formatters/color.rb +12 -8
  31. data/lib/semantic_logger/formatters/default.rb +18 -5
  32. data/lib/semantic_logger/formatters/fluentd.rb +3 -3
  33. data/lib/semantic_logger/formatters/json.rb +1 -1
  34. data/lib/semantic_logger/formatters/logfmt.rb +72 -0
  35. data/lib/semantic_logger/formatters/raw.rb +31 -7
  36. data/lib/semantic_logger/formatters/signalfx.rb +10 -9
  37. data/lib/semantic_logger/formatters/syslog.rb +8 -6
  38. data/lib/semantic_logger/formatters/syslog_cee.rb +8 -6
  39. data/lib/semantic_logger/formatters.rb +12 -13
  40. data/lib/semantic_logger/jruby/garbage_collection_logger.rb +4 -2
  41. data/lib/semantic_logger/levels.rb +9 -7
  42. data/lib/semantic_logger/log.rb +51 -61
  43. data/lib/semantic_logger/loggable.rb +8 -1
  44. data/lib/semantic_logger/logger.rb +19 -11
  45. data/lib/semantic_logger/metric/new_relic.rb +3 -3
  46. data/lib/semantic_logger/metric/signalfx.rb +3 -3
  47. data/lib/semantic_logger/metric/statsd.rb +7 -7
  48. data/lib/semantic_logger/processor.rb +9 -7
  49. data/lib/semantic_logger/reporters/minitest.rb +4 -4
  50. data/lib/semantic_logger/semantic_logger.rb +40 -19
  51. data/lib/semantic_logger/subscriber.rb +16 -5
  52. data/lib/semantic_logger/sync.rb +12 -0
  53. data/lib/semantic_logger/sync_processor.rb +43 -0
  54. data/lib/semantic_logger/test/capture_log_events.rb +34 -0
  55. data/lib/semantic_logger/utils.rb +32 -13
  56. data/lib/semantic_logger/version.rb +1 -1
  57. data/lib/semantic_logger.rb +27 -22
  58. metadata +15 -10
@@ -1,5 +1,5 @@
1
- require 'concurrent'
2
- require 'socket'
1
+ require "concurrent"
2
+ require "socket"
3
3
 
4
4
  module SemanticLogger
5
5
  # Logging levels in order of most detailed to most severe
@@ -52,7 +52,7 @@ module SemanticLogger
52
52
  # Returns [String] name of this host for logging purposes
53
53
  # Note: Not all appenders use `host`
54
54
  def self.host
55
- @host ||= Socket.gethostname.force_encoding('UTF-8')
55
+ @host ||= Socket.gethostname.force_encoding("UTF-8")
56
56
  end
57
57
 
58
58
  # Override the default host name
@@ -82,8 +82,8 @@ module SemanticLogger
82
82
  @environment = environment
83
83
  end
84
84
 
85
- @application = ENV['SEMANTIC_LOGGER_APP'] || 'Semantic Logger'
86
- @environment = ENV['SEMANTIC_LOGGER_ENV'] || ENV['RAILS_ENV'] || ENV['RACK_ENV']
85
+ @application = ENV["SEMANTIC_LOGGER_APP"] || "Semantic Logger"
86
+ @environment = ENV["SEMANTIC_LOGGER_ENV"] || ENV["RAILS_ENV"] || ENV["RACK_ENV"]
87
87
 
88
88
  # Add a new logging appender as a new destination for all log messages
89
89
  # emitted from Semantic Logger
@@ -101,7 +101,7 @@ module SemanticLogger
101
101
  # Or,
102
102
  # io: [IO]
103
103
  # An IO Stream to log to.
104
- # For example STDOUT, STDERR, etc.
104
+ # For example $stdout, $stderr, etc.
105
105
  #
106
106
  # Or,
107
107
  # appender: [Symbol|SemanticLogger::Subscriber]
@@ -122,7 +122,7 @@ module SemanticLogger
122
122
  # Default: SemanticLogger.default_level
123
123
  #
124
124
  # formatter: [Symbol|Object|Proc]
125
- # Any of the following symbol values: :default, :color, :json
125
+ # Any of the following symbol values: :default, :color, :json, :logfmt, etc...
126
126
  # Or,
127
127
  # An instance of a class that implements #call
128
128
  # Or,
@@ -138,14 +138,14 @@ module SemanticLogger
138
138
  # Examples:
139
139
  #
140
140
  # # Send all logging output to Standard Out (Screen)
141
- # SemanticLogger.add_appender(io: STDOUT)
141
+ # SemanticLogger.add_appender(io: $stdout)
142
142
  #
143
143
  # # Send all logging output to a file
144
144
  # SemanticLogger.add_appender(file_name: 'logfile.log')
145
145
  #
146
146
  # # Send all logging output to a file and only :info and above to standard output
147
147
  # SemanticLogger.add_appender(file_name: 'logfile.log')
148
- # SemanticLogger.add_appender(io: STDOUT, level: :info)
148
+ # SemanticLogger.add_appender(io: $stdout, level: :info)
149
149
  #
150
150
  # Log to log4r, Logger, etc.:
151
151
  #
@@ -154,7 +154,7 @@ module SemanticLogger
154
154
  # require 'semantic_logger'
155
155
  #
156
156
  # # Built-in Ruby logger
157
- # log = Logger.new(STDOUT)
157
+ # log = Logger.new($stdout)
158
158
  # log.level = Logger::DEBUG
159
159
  #
160
160
  # SemanticLogger.default_level = :debug
@@ -164,7 +164,7 @@ module SemanticLogger
164
164
  # logger.info "Hello World"
165
165
  # logger.debug("Login time", user: 'Joe', duration: 100, ip_address: '127.0.0.1')
166
166
  def self.add_appender(**args, &block)
167
- appender = Logger.processor.appenders.add(**args, &block)
167
+ appender = appenders.add(**args, &block)
168
168
  # Start appender thread if it is not already running
169
169
  Logger.processor.start
170
170
  appender
@@ -173,7 +173,15 @@ module SemanticLogger
173
173
  # Remove an existing appender
174
174
  # Currently only supports appender instances
175
175
  def self.remove_appender(appender)
176
- Logger.processor.appenders.delete(appender)
176
+ return unless appender
177
+
178
+ appenders.delete(appender)
179
+ appender.close
180
+ end
181
+
182
+ # Clear out all previously registered appenders
183
+ def self.clear_appenders!
184
+ Logger.processor.close
177
185
  end
178
186
 
179
187
  # Returns [SemanticLogger::Subscriber] a copy of the list of active
@@ -181,7 +189,7 @@ module SemanticLogger
181
189
  # Use SemanticLogger.add_appender and SemanticLogger.remove_appender
182
190
  # to manipulate the active appenders list
183
191
  def self.appenders
184
- Logger.processor.appenders.to_a
192
+ Logger.processor.appenders
185
193
  end
186
194
 
187
195
  # Flush all queued log entries disk, database, etc.
@@ -268,22 +276,23 @@ module SemanticLogger
268
276
  # Note:
269
277
  # To only register one of the signal handlers, set the other to nil
270
278
  # Set gc_log_microseconds to nil to not enable JRuby Garbage collections
271
- def self.add_signal_handler(log_level_signal = 'USR2', thread_dump_signal = 'TTIN', gc_log_microseconds = 100_000)
279
+ def self.add_signal_handler(log_level_signal = "USR2", thread_dump_signal = "TTIN", gc_log_microseconds = 100_000)
272
280
  if log_level_signal
273
281
  Signal.trap(log_level_signal) do
274
282
  index = default_level == :trace ? LEVELS.find_index(:error) : LEVELS.find_index(default_level)
275
283
  new_level = LEVELS[index - 1]
276
- self['SemanticLogger'].warn "Changed global default log level to #{new_level.inspect}"
284
+ self["SemanticLogger"].warn "Changed global default log level to #{new_level.inspect}"
277
285
  self.default_level = new_level
278
286
  end
279
287
  end
280
288
 
281
289
  if thread_dump_signal
282
290
  Signal.trap(thread_dump_signal) do
283
- logger = SemanticLogger['Thread Dump']
291
+ logger = SemanticLogger["Thread Dump"]
284
292
  Thread.list.each do |thread|
285
293
  # MRI re-uses the main thread for signals, JRuby uses `SIGTTIN handler` thread.
286
294
  next if defined?(JRuby) && (thread == Thread.current)
295
+
287
296
  logger.backtrace(thread: thread)
288
297
  end
289
298
  end
@@ -302,7 +311,7 @@ module SemanticLogger
302
311
  # If the tag being supplied is definitely a string then this fast
303
312
  # tag api can be used for short lived tags
304
313
  def self.fast_tag(tag)
305
- return yield if tag.nil? || tag == ''
314
+ return yield if tag.nil? || tag == ""
306
315
 
307
316
  t = Thread.current[:semantic_logger_tags] ||= []
308
317
  begin
@@ -379,7 +388,7 @@ module SemanticLogger
379
388
  # :nodoc
380
389
  def self.named_tagged(hash)
381
390
  return yield if hash.nil? || hash.empty?
382
- raise(ArgumentError, '#named_tagged only accepts named parameters (Hash)') unless hash.is_a?(Hash)
391
+ raise(ArgumentError, "#named_tagged only accepts named parameters (Hash)") unless hash.is_a?(Hash)
383
392
 
384
393
  begin
385
394
  push_named_tags(hash)
@@ -488,11 +497,23 @@ module SemanticLogger
488
497
  Thread.current[:semantic_logger_silence] || @default_level_index
489
498
  end
490
499
 
491
- private
500
+ # Run Semantic Logger in Synchronous mode.
501
+ #
502
+ # I.e. Instead of logging messages in a separate thread for better performance,
503
+ # log them using the current thread.
504
+ def self.sync!
505
+ Logger.sync!
506
+ end
507
+
508
+ # Running in synchronous mode?
509
+ def self.sync?
510
+ Logger.sync?
511
+ end
492
512
 
493
513
  # Initial default Level for all new instances of SemanticLogger::Logger
494
514
  @default_level = :info
495
515
  @default_level_index = Levels.index(@default_level)
496
516
  @backtrace_level = :error
497
517
  @backtrace_level_index = Levels.index(@backtrace_level)
518
+ @sync = false
498
519
  end
@@ -22,6 +22,11 @@ module SemanticLogger
22
22
  # NOOP
23
23
  end
24
24
 
25
+ # Method called to log an event
26
+ def log(log)
27
+ raise NotImplementedError
28
+ end
29
+
25
30
  # Returns [SemanticLogger::Formatters::Default] default formatter for this subscriber.
26
31
  def default_formatter
27
32
  SemanticLogger::Formatters::Default.new
@@ -45,11 +50,12 @@ module SemanticLogger
45
50
  # Give each appender its own logger for logging.
46
51
  # For example trace messages sent to services or errors when something fails.
47
52
  def logger
48
- @logger ||= begin
49
- logger = SemanticLogger::Processor.logger.clone
50
- logger.name = self.class.name
51
- logger
52
- end
53
+ @logger ||=
54
+ begin
55
+ logger = SemanticLogger::Processor.logger.clone
56
+ logger.name = self.class.name
57
+ logger
58
+ end
53
59
  end
54
60
 
55
61
  # Set the formatter from Symbol|Hash|Block
@@ -67,6 +73,11 @@ module SemanticLogger
67
73
  super(log) && (log.metric_only? ? metrics? : true)
68
74
  end
69
75
 
76
+ # Whether this appender is logging to stdout or stderror
77
+ def console_output?
78
+ false
79
+ end
80
+
70
81
  private
71
82
 
72
83
  # Initializer for Abstract Class SemanticLogger::Subscriber
@@ -0,0 +1,12 @@
1
+ # Run Semantic Logger in Synchronous mode.
2
+ #
3
+ # I.e. Instead of logging messages in a separate thread for better performance,
4
+ # log them using the current thread.
5
+ #
6
+ # Usage:
7
+ # require "semantic_logger/sync"
8
+ #
9
+ # Or, when using a Gemfile:
10
+ # gem "semantic_logger", require: "semantic_logger/sync"
11
+ require "semantic_logger"
12
+ SemanticLogger.sync!
@@ -0,0 +1,43 @@
1
+ module SemanticLogger
2
+ # Thread that submits and processes log requests
3
+ class SyncProcessor
4
+ extend Forwardable
5
+
6
+ # Forward methods that can be called directly
7
+ def_delegator :@appenders, :add
8
+ def_delegator :@appenders, :log
9
+ def_delegator :@appenders, :flush
10
+ def_delegator :@appenders, :close
11
+ def_delegator :@appenders, :reopen
12
+
13
+ # Allow the internal logger to be overridden from its default of $stderr
14
+ # Can be replaced with another Ruby logger or Rails logger, but never to
15
+ # SemanticLogger::Logger itself since it is for reporting problems
16
+ # while trying to log to the various appenders
17
+ class << self
18
+ attr_writer :logger
19
+ end
20
+
21
+ # Internal logger for SemanticLogger
22
+ # For example when an appender is not working etc..
23
+ # By default logs to $stderr
24
+ def self.logger
25
+ @logger ||=
26
+ begin
27
+ l = SemanticLogger::Appender::IO.new($stderr, level: :warn)
28
+ l.name = name
29
+ l
30
+ end
31
+ end
32
+
33
+ attr_reader :appenders
34
+
35
+ def initialize(appenders = nil)
36
+ @appenders = appenders || Appenders.new(self.class.logger.dup)
37
+ end
38
+
39
+ def start
40
+ # NOP
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,34 @@
1
+ module SemanticLogger
2
+ module Test
3
+ # Logging class to captures all logging events in memory.
4
+ #
5
+ # Example:
6
+ #
7
+ # class UserTest < ActiveSupport::TestCase
8
+ # describe User do
9
+ # let(:capture_logger) { SemanticLogger::Test::CaptureLogEvents.new }
10
+ # let(:user) { User.new }
11
+ #
12
+ # it "logs message" do
13
+ # user.stub(:logger, capture_logger) do
14
+ # user.enable!
15
+ # end
16
+ # assert_equal "Hello World", capture_logger.events.last.message
17
+ # assert_equal :info, capture_logger.events.last.level
18
+ # end
19
+ # end
20
+ # end
21
+ class CaptureLogEvents < SemanticLogger::Subscriber
22
+ attr_accessor :events
23
+
24
+ # By default collect all log levels, and collect metric only log events.
25
+ def initialize(level: :trace, metrics: true)
26
+ super(level: level, metrics: true)
27
+ end
28
+
29
+ def log(log)
30
+ (@events ||= []) << log
31
+ end
32
+ end
33
+ end
34
+ end
@@ -2,7 +2,7 @@ module SemanticLogger
2
2
  # Internal-use only utility functions for Semantic Logger.
3
3
  # Not intended for public use.
4
4
  module Utils
5
- def self.constantize_symbol(symbol, namespace = 'SemanticLogger::Appender')
5
+ def self.constantize_symbol(symbol, namespace = "SemanticLogger::Appender")
6
6
  klass = "#{namespace}::#{camelize(symbol.to_s)}"
7
7
  begin
8
8
  Object.const_get(klass)
@@ -15,8 +15,8 @@ module SemanticLogger
15
15
  def self.camelize(term)
16
16
  string = term.to_s
17
17
  string = string.sub(/^[a-z\d]*/, &:capitalize)
18
- string.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}" }
19
- string.gsub!('/'.freeze, '::'.freeze)
18
+ string.gsub!(%r{(?:_|(/))([a-z\d]*)}i) { "#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}" }
19
+ string.gsub!("/".freeze, "::".freeze)
20
20
  string
21
21
  end
22
22
 
@@ -32,29 +32,48 @@ module SemanticLogger
32
32
  end
33
33
  end
34
34
 
35
- SELF_PATTERN = File.join('lib', 'semantic_logger')
36
-
37
- # Extract the backtrace leaving out the last few Semantic Logger lines.
35
+ # Extract the backtrace stripping off the leading semantic logger entries.
36
+ # Leaves all other system and gem path entries in place.
38
37
  def self.extract_backtrace(stack = caller)
39
- while (first = stack.first) && first.include?(SELF_PATTERN)
38
+ while (first = stack.first) && extract_path?(first)
40
39
  stack.shift
41
40
  end
42
41
  stack
43
42
  end
44
43
 
45
- # Strips off all gems and built-in ruby code paths from the top of the stack until application code is found.
44
+ def self.extract_paths
45
+ @extract_paths ||= %w[lib/semantic_logger lib/rails_semantic_logger]
46
+ end
47
+
48
+ # Whether this path should be excluded from any cleansed backtrace
49
+ def self.extract_path?(path)
50
+ extract_paths.any? { |exclude| path.include?(exclude) }
51
+ end
52
+
53
+ # Try to strip everything off of the supplied backtrace, until the first application stack entry is at the top.
54
+ # For example all leading gem paths and built-in ruby code paths are removed from the top.
55
+ # Once the first application entry is found, the remaining stack is returned.
46
56
  def self.strip_backtrace(stack = caller)
47
- while (first = stack.first) && system_path?(first)
57
+ while (first = stack.first) && (strip_path?(first) || extract_path?(first))
48
58
  stack.shift
49
59
  end
50
60
  stack
51
61
  end
52
62
 
53
- GEM_ROOT = File.expand_path('../../..', __dir__) + '/'
63
+ # Paths to exclude in the stripped backtrace
64
+ # Includes Gems and built-in Ruby code paths
65
+ def self.strip_paths
66
+ @strip_paths ||=
67
+ begin
68
+ paths = Gem.path | [Gem.default_dir]
69
+ paths << RbConfig::CONFIG["rubylibdir"]
70
+ paths
71
+ end
72
+ end
54
73
 
55
- def self.system_path?(path)
56
- path.start_with?(GEM_ROOT) ||
57
- path.start_with?(RbConfig::CONFIG['rubylibdir'])
74
+ # Whether this path should be excluded from any cleansed backtrace
75
+ def self.strip_path?(path)
76
+ strip_paths.any? { |exclude| path.start_with?(exclude) }
58
77
  end
59
78
  end
60
79
  end
@@ -1,3 +1,3 @@
1
1
  module SemanticLogger
2
- VERSION = '4.6.1'.freeze
2
+ VERSION = "4.10.0".freeze
3
3
  end
@@ -1,43 +1,48 @@
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"
33
+ end
34
+
35
+ module Test
36
+ autoload :CaptureLogEvents, "semantic_logger/test/capture_log_events"
32
37
  end
33
38
 
34
39
  if defined?(JRuby)
35
40
  module JRuby
36
- autoload :GarbageCollectionLogger, 'semantic_logger/jruby/garbage_collection_logger'
41
+ autoload :GarbageCollectionLogger, "semantic_logger/jruby/garbage_collection_logger"
37
42
  end
38
43
  end
39
44
  end
40
- require 'semantic_logger/semantic_logger'
45
+ require "semantic_logger/semantic_logger"
41
46
  # @formatter:on
42
47
 
43
48
  # Flush all appenders at exit, waiting for outstanding messages on the queue
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semantic_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.6.1
4
+ version: 4.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-24 00:00:00.000000000 Z
11
+ date: 2022-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -24,9 +24,8 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
- description:
27
+ description:
28
28
  email:
29
- - reidmo@gmail.com
30
29
  executables: []
31
30
  extensions: []
32
31
  extra_rdoc_files: []
@@ -46,11 +45,13 @@ files:
46
45
  - lib/semantic_logger/appender/graylog.rb
47
46
  - lib/semantic_logger/appender/honeybadger.rb
48
47
  - lib/semantic_logger/appender/http.rb
48
+ - lib/semantic_logger/appender/io.rb
49
49
  - lib/semantic_logger/appender/kafka.rb
50
50
  - lib/semantic_logger/appender/mongodb.rb
51
51
  - lib/semantic_logger/appender/new_relic.rb
52
52
  - lib/semantic_logger/appender/rabbitmq.rb
53
53
  - lib/semantic_logger/appender/sentry.rb
54
+ - lib/semantic_logger/appender/sentry_ruby.rb
54
55
  - lib/semantic_logger/appender/splunk.rb
55
56
  - lib/semantic_logger/appender/splunk_http.rb
56
57
  - lib/semantic_logger/appender/syslog.rb
@@ -68,6 +69,7 @@ files:
68
69
  - lib/semantic_logger/formatters/default.rb
69
70
  - lib/semantic_logger/formatters/fluentd.rb
70
71
  - lib/semantic_logger/formatters/json.rb
72
+ - lib/semantic_logger/formatters/logfmt.rb
71
73
  - lib/semantic_logger/formatters/one_line.rb
72
74
  - lib/semantic_logger/formatters/raw.rb
73
75
  - lib/semantic_logger/formatters/signalfx.rb
@@ -85,13 +87,16 @@ files:
85
87
  - lib/semantic_logger/reporters/minitest.rb
86
88
  - lib/semantic_logger/semantic_logger.rb
87
89
  - lib/semantic_logger/subscriber.rb
90
+ - lib/semantic_logger/sync.rb
91
+ - lib/semantic_logger/sync_processor.rb
92
+ - lib/semantic_logger/test/capture_log_events.rb
88
93
  - lib/semantic_logger/utils.rb
89
94
  - lib/semantic_logger/version.rb
90
- homepage: https://github.com/rocketjob/semantic_logger
95
+ homepage: https://logger.rocketjob.io
91
96
  licenses:
92
97
  - Apache-2.0
93
98
  metadata: {}
94
- post_install_message:
99
+ post_install_message:
95
100
  rdoc_options: []
96
101
  require_paths:
97
102
  - lib
@@ -99,15 +104,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
99
104
  requirements:
100
105
  - - ">="
101
106
  - !ruby/object:Gem::Version
102
- version: '2.3'
107
+ version: '2.5'
103
108
  required_rubygems_version: !ruby/object:Gem::Requirement
104
109
  requirements:
105
110
  - - ">="
106
111
  - !ruby/object:Gem::Version
107
112
  version: '0'
108
113
  requirements: []
109
- rubygems_version: 3.0.6
110
- signing_key:
114
+ rubygems_version: 3.3.3
115
+ signing_key:
111
116
  specification_version: 4
112
117
  summary: Feature rich logging framework, and replacement for existing Ruby & Rails
113
118
  loggers.