conrad 2.1.0 → 2.2.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/lib/conrad/collector.rb +36 -3
- data/lib/conrad/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dca0b05c54f60645fece80d8226d43d6130afb47aac653d8bb92090b619c7812
|
4
|
+
data.tar.gz: 26a24ce8ec5288ab2847fda11442c13dbba14addd883dd2931d32ef1da240222
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f9023ef66bb257ad4d9ceaa25b4ce63e646128c67e11de7fda8a765622235eefebfc83019a6ff4f0349ce0134b19793c689c0319f07e9e4e2af9e3f5982442d
|
7
|
+
data.tar.gz: fa8f34c73693be7666ee7ccadd9ba54f69d716c197ced407d5788a2a0205dea7755771fd4d359e2362befff766caae9173e89fb183fb757ec0e230c0b335a7c2
|
data/lib/conrad/collector.rb
CHANGED
@@ -37,6 +37,10 @@ module Conrad
|
|
37
37
|
# instead be sent one-by-one. Defaults to false.
|
38
38
|
attr_accessor :default_emit_as_batch
|
39
39
|
|
40
|
+
# Allows assigning a default logger to use for logging out of the gem.
|
41
|
+
# Should respond to #debug, #info, #warn, #error, and #fatal.
|
42
|
+
attr_accessor :default_logger
|
43
|
+
|
40
44
|
# @return [Conrad::Collector] the collector for a given Thread that is
|
41
45
|
# currently active
|
42
46
|
def current
|
@@ -79,6 +83,9 @@ module Conrad
|
|
79
83
|
attr_accessor :emit_as_batch
|
80
84
|
alias emit_as_batch? emit_as_batch
|
81
85
|
|
86
|
+
# Logger object used for sending log events
|
87
|
+
attr_accessor :logger
|
88
|
+
|
82
89
|
# @param processors [Array<#call>] set of processors to run. Defaults to
|
83
90
|
# processors as configured for the class.
|
84
91
|
# @param formatter [#call] Formatter to use. Defaults to
|
@@ -91,7 +98,8 @@ module Conrad
|
|
91
98
|
processors: self.class.default_processors,
|
92
99
|
formatter: self.class.default_formatter,
|
93
100
|
emitter: self.class.default_emitter,
|
94
|
-
emit_as_batch: self.class.default_emit_as_batch
|
101
|
+
emit_as_batch: self.class.default_emit_as_batch,
|
102
|
+
logger: self.class.default_logger
|
95
103
|
)
|
96
104
|
@events = []
|
97
105
|
@event_metadata = {}
|
@@ -100,6 +108,7 @@ module Conrad
|
|
100
108
|
@formatter = formatter
|
101
109
|
@emitter = emitter
|
102
110
|
@emit_as_batch = emit_as_batch
|
111
|
+
@logger = logger
|
103
112
|
end
|
104
113
|
|
105
114
|
# Adds an event to the Collector to be audited at a later time. The
|
@@ -123,13 +132,18 @@ module Conrad
|
|
123
132
|
|
124
133
|
# Records the events currently in the collection then clears the state of
|
125
134
|
# the Collector by emptying the events stack and clearing out the metadata.
|
135
|
+
#
|
136
|
+
# @note Currently for emitting individual events, if an error is raised then
|
137
|
+
# a log message will be attempted using the configured logger. For batch
|
138
|
+
# emitted events, the error will be allowed to bubble up. This is to
|
139
|
+
# prevent the unexpected loss of events if a single one is malformed.
|
126
140
|
def record_events
|
127
141
|
if emit_as_batch?
|
128
142
|
record_events_as_batch
|
129
143
|
else
|
130
144
|
record_individual_events
|
131
145
|
end
|
132
|
-
|
146
|
+
ensure
|
133
147
|
reset_state
|
134
148
|
end
|
135
149
|
|
@@ -140,6 +154,15 @@ module Conrad
|
|
140
154
|
@processors = processors
|
141
155
|
end
|
142
156
|
|
157
|
+
# Adds the given hash of data to the already existing event metadata
|
158
|
+
#
|
159
|
+
# @param new_metadata [Hash]
|
160
|
+
#
|
161
|
+
# @return nothing
|
162
|
+
def add_metadata(new_metadata)
|
163
|
+
event_metadata.merge!(new_metadata)
|
164
|
+
end
|
165
|
+
|
143
166
|
private
|
144
167
|
|
145
168
|
attr_reader :processor_stack
|
@@ -156,7 +179,11 @@ module Conrad
|
|
156
179
|
|
157
180
|
def record_individual_events
|
158
181
|
events.each do |event|
|
159
|
-
|
182
|
+
begin
|
183
|
+
emitter.call(event)
|
184
|
+
rescue StandardError => e
|
185
|
+
write_log(:error, e)
|
186
|
+
end
|
160
187
|
end
|
161
188
|
end
|
162
189
|
|
@@ -164,5 +191,11 @@ module Conrad
|
|
164
191
|
event_metadata.clear
|
165
192
|
events.clear
|
166
193
|
end
|
194
|
+
|
195
|
+
def write_log(level, data)
|
196
|
+
return unless logger
|
197
|
+
|
198
|
+
logger.public_send(level, data)
|
199
|
+
end
|
167
200
|
end
|
168
201
|
end
|
data/lib/conrad/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: conrad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathon Anderson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|