semantic_logger 4.18.0 → 5.0.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 +42 -81
- data/Rakefile +10 -3
- data/lib/semantic_logger/appender/async.rb +86 -173
- data/lib/semantic_logger/appender/cloudwatch_logs.rb +4 -4
- data/lib/semantic_logger/appender/elasticsearch.rb +6 -182
- data/lib/semantic_logger/appender/elasticsearch_base.rb +212 -0
- data/lib/semantic_logger/appender/elasticsearch_http.rb +2 -2
- data/lib/semantic_logger/appender/file.rb +20 -4
- data/lib/semantic_logger/appender/graylog.rb +2 -2
- data/lib/semantic_logger/appender/http.rb +27 -2
- data/lib/semantic_logger/appender/io.rb +8 -4
- data/lib/semantic_logger/appender/kafka.rb +2 -2
- data/lib/semantic_logger/appender/loki.rb +2 -4
- data/lib/semantic_logger/appender/mongodb.rb +3 -6
- data/lib/semantic_logger/appender/new_relic_logs.rb +2 -2
- data/lib/semantic_logger/appender/open_telemetry.rb +8 -6
- data/lib/semantic_logger/appender/opensearch.rb +35 -0
- data/lib/semantic_logger/appender/rabbitmq.rb +3 -3
- data/lib/semantic_logger/appender/sentry_ruby.rb +2 -2
- data/lib/semantic_logger/appender/splunk.rb +2 -2
- data/lib/semantic_logger/appender/splunk_http.rb +3 -3
- data/lib/semantic_logger/appender/syslog.rb +5 -4
- data/lib/semantic_logger/appender/tcp.rb +2 -2
- data/lib/semantic_logger/appender/udp.rb +2 -2
- data/lib/semantic_logger/appender/wrapper.rb +4 -4
- data/lib/semantic_logger/appender.rb +30 -19
- data/lib/semantic_logger/appenders.rb +26 -5
- data/lib/semantic_logger/base.rb +100 -21
- data/lib/semantic_logger/concerns/compatibility.rb +2 -2
- data/lib/semantic_logger/core_ext/process.rb +34 -0
- data/lib/semantic_logger/formatters/base.rb +46 -7
- data/lib/semantic_logger/formatters/color.rb +6 -3
- data/lib/semantic_logger/formatters/default.rb +6 -4
- data/lib/semantic_logger/formatters/ecs.rb +151 -0
- data/lib/semantic_logger/formatters/fluentd.rb +15 -4
- data/lib/semantic_logger/formatters/json.rb +6 -1
- data/lib/semantic_logger/formatters/logfmt.rb +2 -2
- data/lib/semantic_logger/formatters/loki.rb +4 -4
- data/lib/semantic_logger/formatters/open_telemetry.rb +15 -5
- data/lib/semantic_logger/formatters/pattern.rb +235 -0
- data/lib/semantic_logger/formatters/raw.rb +2 -2
- data/lib/semantic_logger/formatters/signalfx.rb +2 -2
- data/lib/semantic_logger/formatters/syslog.rb +14 -3
- data/lib/semantic_logger/formatters/syslog_cee.rb +1 -1
- data/lib/semantic_logger/formatters.rb +2 -0
- data/lib/semantic_logger/log.rb +18 -4
- data/lib/semantic_logger/logger.rb +2 -2
- data/lib/semantic_logger/metric/new_relic.rb +2 -2
- data/lib/semantic_logger/metric/signalfx.rb +2 -2
- data/lib/semantic_logger/metric/statsd.rb +2 -2
- data/lib/semantic_logger/processor.rb +21 -0
- data/lib/semantic_logger/queue_processor.rb +369 -0
- data/lib/semantic_logger/reporters/minitest.rb +4 -4
- data/lib/semantic_logger/semantic_logger.rb +103 -11
- data/lib/semantic_logger/subscriber.rb +15 -2
- data/lib/semantic_logger/sync_processor.rb +25 -3
- data/lib/semantic_logger/test/capture_log_events.rb +2 -2
- data/lib/semantic_logger/test/minitest.rb +8 -4
- data/lib/semantic_logger/test/rspec.rb +249 -0
- data/lib/semantic_logger/utils.rb +83 -4
- data/lib/semantic_logger/version.rb +1 -1
- data/lib/semantic_logger.rb +9 -0
- metadata +17 -8
- data/lib/semantic_logger/appender/async_batch.rb +0 -93
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: semantic_logger
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 5.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Reid Morrison
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: concurrent-ruby
|
|
@@ -23,6 +23,9 @@ dependencies:
|
|
|
23
23
|
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '1.0'
|
|
26
|
+
description: Semantic Logger is a high-performance, asynchronous structured logging
|
|
27
|
+
framework for Ruby & Rails. It logs to multiple destinations via a background thread,
|
|
28
|
+
preserving structured (semantic) payloads.
|
|
26
29
|
executables: []
|
|
27
30
|
extensions: []
|
|
28
31
|
extra_rdoc_files: []
|
|
@@ -34,10 +37,10 @@ files:
|
|
|
34
37
|
- lib/semantic_logger/ansi_colors.rb
|
|
35
38
|
- lib/semantic_logger/appender.rb
|
|
36
39
|
- lib/semantic_logger/appender/async.rb
|
|
37
|
-
- lib/semantic_logger/appender/async_batch.rb
|
|
38
40
|
- lib/semantic_logger/appender/bugsnag.rb
|
|
39
41
|
- lib/semantic_logger/appender/cloudwatch_logs.rb
|
|
40
42
|
- lib/semantic_logger/appender/elasticsearch.rb
|
|
43
|
+
- lib/semantic_logger/appender/elasticsearch_base.rb
|
|
41
44
|
- lib/semantic_logger/appender/elasticsearch_http.rb
|
|
42
45
|
- lib/semantic_logger/appender/file.rb
|
|
43
46
|
- lib/semantic_logger/appender/graylog.rb
|
|
@@ -51,6 +54,7 @@ files:
|
|
|
51
54
|
- lib/semantic_logger/appender/new_relic.rb
|
|
52
55
|
- lib/semantic_logger/appender/new_relic_logs.rb
|
|
53
56
|
- lib/semantic_logger/appender/open_telemetry.rb
|
|
57
|
+
- lib/semantic_logger/appender/opensearch.rb
|
|
54
58
|
- lib/semantic_logger/appender/rabbitmq.rb
|
|
55
59
|
- lib/semantic_logger/appender/sentry.rb
|
|
56
60
|
- lib/semantic_logger/appender/sentry_ruby.rb
|
|
@@ -63,12 +67,14 @@ files:
|
|
|
63
67
|
- lib/semantic_logger/appenders.rb
|
|
64
68
|
- lib/semantic_logger/base.rb
|
|
65
69
|
- lib/semantic_logger/concerns/compatibility.rb
|
|
70
|
+
- lib/semantic_logger/core_ext/process.rb
|
|
66
71
|
- lib/semantic_logger/core_ext/thread.rb
|
|
67
72
|
- lib/semantic_logger/debug_as_trace_logger.rb
|
|
68
73
|
- lib/semantic_logger/formatters.rb
|
|
69
74
|
- lib/semantic_logger/formatters/base.rb
|
|
70
75
|
- lib/semantic_logger/formatters/color.rb
|
|
71
76
|
- lib/semantic_logger/formatters/default.rb
|
|
77
|
+
- lib/semantic_logger/formatters/ecs.rb
|
|
72
78
|
- lib/semantic_logger/formatters/fluentd.rb
|
|
73
79
|
- lib/semantic_logger/formatters/json.rb
|
|
74
80
|
- lib/semantic_logger/formatters/logfmt.rb
|
|
@@ -76,6 +82,7 @@ files:
|
|
|
76
82
|
- lib/semantic_logger/formatters/new_relic_logs.rb
|
|
77
83
|
- lib/semantic_logger/formatters/one_line.rb
|
|
78
84
|
- lib/semantic_logger/formatters/open_telemetry.rb
|
|
85
|
+
- lib/semantic_logger/formatters/pattern.rb
|
|
79
86
|
- lib/semantic_logger/formatters/raw.rb
|
|
80
87
|
- lib/semantic_logger/formatters/signalfx.rb
|
|
81
88
|
- lib/semantic_logger/formatters/syslog.rb
|
|
@@ -89,6 +96,7 @@ files:
|
|
|
89
96
|
- lib/semantic_logger/metric/signalfx.rb
|
|
90
97
|
- lib/semantic_logger/metric/statsd.rb
|
|
91
98
|
- lib/semantic_logger/processor.rb
|
|
99
|
+
- lib/semantic_logger/queue_processor.rb
|
|
92
100
|
- lib/semantic_logger/reporters/minitest.rb
|
|
93
101
|
- lib/semantic_logger/semantic_logger.rb
|
|
94
102
|
- lib/semantic_logger/subscriber.rb
|
|
@@ -96,6 +104,7 @@ files:
|
|
|
96
104
|
- lib/semantic_logger/sync_processor.rb
|
|
97
105
|
- lib/semantic_logger/test/capture_log_events.rb
|
|
98
106
|
- lib/semantic_logger/test/minitest.rb
|
|
107
|
+
- lib/semantic_logger/test/rspec.rb
|
|
99
108
|
- lib/semantic_logger/utils.rb
|
|
100
109
|
- lib/semantic_logger/version.rb
|
|
101
110
|
homepage: https://logger.rocketjob.io
|
|
@@ -103,8 +112,9 @@ licenses:
|
|
|
103
112
|
- Apache-2.0
|
|
104
113
|
metadata:
|
|
105
114
|
bug_tracker_uri: https://github.com/reidmorrison/semantic_logger/issues
|
|
115
|
+
changelog_uri: https://github.com/reidmorrison/semantic_logger/releases
|
|
106
116
|
documentation_uri: https://logger.rocketjob.io
|
|
107
|
-
source_code_uri: https://github.com/reidmorrison/semantic_logger/tree/
|
|
117
|
+
source_code_uri: https://github.com/reidmorrison/semantic_logger/tree/v5.0.0
|
|
108
118
|
rubygems_mfa_required: 'true'
|
|
109
119
|
rdoc_options: []
|
|
110
120
|
require_paths:
|
|
@@ -113,15 +123,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
113
123
|
requirements:
|
|
114
124
|
- - ">="
|
|
115
125
|
- !ruby/object:Gem::Version
|
|
116
|
-
version: '2
|
|
126
|
+
version: '3.2'
|
|
117
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
128
|
requirements:
|
|
119
129
|
- - ">="
|
|
120
130
|
- !ruby/object:Gem::Version
|
|
121
131
|
version: '0'
|
|
122
132
|
requirements: []
|
|
123
|
-
rubygems_version: 3.6.
|
|
133
|
+
rubygems_version: 3.6.9
|
|
124
134
|
specification_version: 4
|
|
125
|
-
summary:
|
|
126
|
-
loggers.
|
|
135
|
+
summary: High-performance, asynchronous structured logging framework for Ruby & Rails.
|
|
127
136
|
test_files: []
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
module SemanticLogger
|
|
2
|
-
module Appender
|
|
3
|
-
# Log asynchronously in batches using a separate thread.
|
|
4
|
-
#
|
|
5
|
-
# Log messages are grouped up and only logged when:
|
|
6
|
-
# * The number of queued messages is exceeded.
|
|
7
|
-
# * Or, the appropriate amount of time has passed since the last batch was sent.
|
|
8
|
-
class AsyncBatch < Async
|
|
9
|
-
attr_accessor :batch_size, :batch_seconds
|
|
10
|
-
attr_reader :signal
|
|
11
|
-
|
|
12
|
-
# Batching Appender proxy for appenders that support batches.
|
|
13
|
-
#
|
|
14
|
-
# Parameters:
|
|
15
|
-
# batch_size: [Integer]
|
|
16
|
-
# Maximum number of messages to batch up before sending.
|
|
17
|
-
# Default: 300
|
|
18
|
-
#
|
|
19
|
-
# batch_seconds: [Integer]
|
|
20
|
-
# Maximum number of seconds between sending batches.
|
|
21
|
-
# Default: 5
|
|
22
|
-
#
|
|
23
|
-
# See SemanticLogger::Appender::Async for other paramaters
|
|
24
|
-
#
|
|
25
|
-
# Note:
|
|
26
|
-
# * `lag_check_interval` is not applicable to batches, since the first message of every batch
|
|
27
|
-
# is the oldest and is always checked to see if the lag interval has been exceeded.
|
|
28
|
-
def initialize(appender:,
|
|
29
|
-
max_queue_size: 10_000,
|
|
30
|
-
lag_threshold_s: 30,
|
|
31
|
-
batch_size: 300,
|
|
32
|
-
batch_seconds: 5)
|
|
33
|
-
@batch_size = batch_size
|
|
34
|
-
@batch_seconds = batch_seconds
|
|
35
|
-
@signal = Concurrent::Event.new
|
|
36
|
-
super(
|
|
37
|
-
appender: appender,
|
|
38
|
-
max_queue_size: max_queue_size,
|
|
39
|
-
lag_threshold_s: lag_threshold_s
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
return if appender.respond_to?(:batch)
|
|
43
|
-
|
|
44
|
-
raise(ArgumentError, "#{appender.class.name} does not support batching. It must implement #batch")
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Add log message for processing.
|
|
48
|
-
def log(log)
|
|
49
|
-
result = super
|
|
50
|
-
# Wake up the processing thread since the number of queued messages has been exceeded.
|
|
51
|
-
signal.set if queue.size >= batch_size
|
|
52
|
-
result
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
private
|
|
56
|
-
|
|
57
|
-
# Separate thread for batching up log messages before writing.
|
|
58
|
-
def process_messages
|
|
59
|
-
loop do
|
|
60
|
-
# Wait for batch interval or number of messages to be exceeded.
|
|
61
|
-
signal.wait(batch_seconds)
|
|
62
|
-
|
|
63
|
-
logs = []
|
|
64
|
-
messages = []
|
|
65
|
-
first = true
|
|
66
|
-
message_count = queue.length
|
|
67
|
-
message_count.times do
|
|
68
|
-
# Queue#pop(true) raises an exception when there are no more messages, which is considered expensive.
|
|
69
|
-
message = queue.pop
|
|
70
|
-
if message.is_a?(Log)
|
|
71
|
-
logs << message
|
|
72
|
-
if first
|
|
73
|
-
check_lag(message)
|
|
74
|
-
first = false
|
|
75
|
-
end
|
|
76
|
-
else
|
|
77
|
-
messages << message
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
appender.batch(logs) if logs.size.positive?
|
|
81
|
-
messages.each { |message| process_message(message) }
|
|
82
|
-
signal.reset unless queue.size >= batch_size
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def submit_request(command)
|
|
87
|
-
# Wake up the processing thread to process this command immediately.
|
|
88
|
-
signal.set
|
|
89
|
-
super
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|