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.
- checksums.yaml +4 -4
- data/README.md +50 -20
- data/Rakefile +7 -7
- data/lib/semantic_logger/appender/async.rb +10 -9
- data/lib/semantic_logger/appender/async_batch.rb +7 -3
- data/lib/semantic_logger/appender/bugsnag.rb +43 -30
- data/lib/semantic_logger/appender/elasticsearch.rb +32 -14
- data/lib/semantic_logger/appender/elasticsearch_http.rb +4 -4
- data/lib/semantic_logger/appender/file.rb +249 -67
- data/lib/semantic_logger/appender/graylog.rb +12 -10
- data/lib/semantic_logger/appender/honeybadger.rb +3 -3
- data/lib/semantic_logger/appender/http.rb +20 -18
- data/lib/semantic_logger/appender/io.rb +68 -0
- data/lib/semantic_logger/appender/kafka.rb +9 -5
- data/lib/semantic_logger/appender/mongodb.rb +6 -6
- data/lib/semantic_logger/appender/new_relic.rb +2 -2
- data/lib/semantic_logger/appender/rabbitmq.rb +5 -5
- data/lib/semantic_logger/appender/sentry.rb +7 -7
- data/lib/semantic_logger/appender/sentry_ruby.rb +138 -0
- data/lib/semantic_logger/appender/splunk.rb +6 -5
- data/lib/semantic_logger/appender/splunk_http.rb +6 -6
- data/lib/semantic_logger/appender/syslog.rb +23 -15
- data/lib/semantic_logger/appender/tcp.rb +5 -5
- data/lib/semantic_logger/appender/udp.rb +2 -2
- data/lib/semantic_logger/appender/wrapper.rb +3 -2
- data/lib/semantic_logger/appender.rb +42 -36
- data/lib/semantic_logger/appenders.rb +34 -30
- data/lib/semantic_logger/base.rb +57 -27
- data/lib/semantic_logger/formatters/base.rb +9 -3
- data/lib/semantic_logger/formatters/color.rb +12 -8
- data/lib/semantic_logger/formatters/default.rb +18 -5
- data/lib/semantic_logger/formatters/fluentd.rb +3 -3
- data/lib/semantic_logger/formatters/json.rb +1 -1
- data/lib/semantic_logger/formatters/logfmt.rb +72 -0
- data/lib/semantic_logger/formatters/raw.rb +31 -7
- data/lib/semantic_logger/formatters/signalfx.rb +10 -9
- data/lib/semantic_logger/formatters/syslog.rb +8 -6
- data/lib/semantic_logger/formatters/syslog_cee.rb +8 -6
- data/lib/semantic_logger/formatters.rb +12 -13
- data/lib/semantic_logger/jruby/garbage_collection_logger.rb +4 -2
- data/lib/semantic_logger/levels.rb +9 -7
- data/lib/semantic_logger/log.rb +51 -61
- data/lib/semantic_logger/loggable.rb +8 -1
- data/lib/semantic_logger/logger.rb +19 -11
- data/lib/semantic_logger/metric/new_relic.rb +3 -3
- data/lib/semantic_logger/metric/signalfx.rb +3 -3
- data/lib/semantic_logger/metric/statsd.rb +7 -7
- data/lib/semantic_logger/processor.rb +9 -7
- data/lib/semantic_logger/reporters/minitest.rb +4 -4
- data/lib/semantic_logger/semantic_logger.rb +40 -19
- data/lib/semantic_logger/subscriber.rb +16 -5
- data/lib/semantic_logger/sync.rb +12 -0
- data/lib/semantic_logger/sync_processor.rb +43 -0
- data/lib/semantic_logger/test/capture_log_events.rb +34 -0
- data/lib/semantic_logger/utils.rb +32 -13
- data/lib/semantic_logger/version.rb +1 -1
- data/lib/semantic_logger.rb +27 -22
- metadata +15 -10
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
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(
|
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[
|
86
|
-
@environment = 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
|
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:
|
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:
|
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(
|
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 =
|
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
|
-
|
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
|
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 =
|
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[
|
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[
|
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,
|
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
|
-
|
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 ||=
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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 =
|
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!(
|
19
|
-
string.gsub!(
|
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
|
-
|
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) &&
|
38
|
+
while (first = stack.first) && extract_path?(first)
|
40
39
|
stack.shift
|
41
40
|
end
|
42
41
|
stack
|
43
42
|
end
|
44
43
|
|
45
|
-
|
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) &&
|
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
|
-
|
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
|
-
|
56
|
-
|
57
|
-
|
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
|
data/lib/semantic_logger.rb
CHANGED
@@ -1,43 +1,48 @@
|
|
1
|
-
require
|
2
|
-
require
|
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,
|
7
|
-
autoload :Appender,
|
8
|
-
autoload :Appenders,
|
9
|
-
autoload :Base,
|
10
|
-
autoload :DebugAsTraceLogger,
|
11
|
-
autoload :Formatters,
|
12
|
-
autoload :Levels,
|
13
|
-
autoload :Log,
|
14
|
-
autoload :Logger,
|
15
|
-
autoload :Loggable,
|
16
|
-
autoload :Processor,
|
17
|
-
autoload :Subscriber,
|
18
|
-
autoload :
|
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,
|
22
|
+
autoload :Compatibility, "semantic_logger/concerns/compatibility"
|
22
23
|
end
|
23
24
|
|
24
25
|
module Metric
|
25
|
-
autoload :NewRelic,
|
26
|
-
autoload :Signalfx,
|
27
|
-
autoload :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,
|
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,
|
41
|
+
autoload :GarbageCollectionLogger, "semantic_logger/jruby/garbage_collection_logger"
|
37
42
|
end
|
38
43
|
end
|
39
44
|
end
|
40
|
-
require
|
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.
|
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:
|
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://
|
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.
|
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.
|
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.
|