appsignal 3.2.1-java → 3.2.2-java
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/.semaphore/semaphore.yml +330 -264
- data/CHANGELOG.md +7 -0
- data/build_matrix.yml +52 -46
- data/lib/appsignal/logger.rb +8 -2
- data/lib/appsignal/probes/mri.rb +32 -11
- data/lib/appsignal/version.rb +1 -1
- data/spec/lib/appsignal/auth_check_spec.rb +1 -6
- data/spec/lib/appsignal/logger_spec.rb +28 -0
- data/spec/lib/appsignal/probes/mri_spec.rb +8 -3
- data/spec/support/helpers/dependency_helper.rb +4 -0
- metadata +3 -3
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# AppSignal for Ruby gem Changelog
|
2
2
|
|
3
|
+
## 3.2.2
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
|
7
|
+
- [2b1964d9](https://github.com/appsignal/appsignal-ruby/commit/2b1964d94eee0b20c12f5c602c427643057e787b) patch - Track new Ruby 3.2 VM cache metrics. In Ruby 3.2 the `class_serial` and `global_constant_state` metrics are no longer reported for the "Ruby (VM) metrics" magic dashboard, because Ruby 3.2 removed these metrics. Instead we will now report the new `constant_cache_invalidations` and `constant_cache_misses` metrics reported by Ruby 3.2.
|
8
|
+
- [6804e898](https://github.com/appsignal/appsignal-ruby/commit/6804e89817234c88105d2376687b5574bfc8e8c9) patch - Use log formatter if set in logger
|
9
|
+
|
3
10
|
## 3.2.1
|
4
11
|
|
5
12
|
### Fixed
|
data/build_matrix.yml
CHANGED
@@ -25,6 +25,12 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
25
25
|
commands:
|
26
26
|
- checkout
|
27
27
|
- rm -f $HOME/.rbenv/plugins/rbenv-gem-rehash/etc/rbenv.d/exec/~gem-rehash.bash
|
28
|
+
- |
|
29
|
+
if [ -n "$_LIBYAML" ]; then
|
30
|
+
install-package --update libyaml-dev
|
31
|
+
else
|
32
|
+
echo Skipping libyaml-dev install
|
33
|
+
fi
|
28
34
|
- |
|
29
35
|
if [ -n "$_C_VERSION" ]; then
|
30
36
|
sem-version c $_C_VERSION
|
@@ -54,8 +60,8 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
54
60
|
task:
|
55
61
|
prologue:
|
56
62
|
commands:
|
57
|
-
- cache restore $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)
|
58
|
-
- cache restore $_GEMS_CACHE-gems-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)
|
63
|
+
- cache restore $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec)
|
64
|
+
- cache restore $_GEMS_CACHE-gems-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec)
|
59
65
|
- ./support/bundler_wrapper install --jobs=3 --retry=3
|
60
66
|
jobs:
|
61
67
|
- name: Validate CI setup
|
@@ -71,15 +77,15 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
71
77
|
epilogue:
|
72
78
|
on_pass:
|
73
79
|
commands:
|
74
|
-
- cache store $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE) .bundle
|
75
|
-
- cache store $_GEMS_CACHE-gems-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE) $HOME/.gem
|
80
|
+
- cache store $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec) .bundle
|
81
|
+
- cache store $_GEMS_CACHE-gems-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec) $HOME/.gem
|
76
82
|
- name: Ruby linters
|
77
83
|
dependencies: []
|
78
84
|
task:
|
79
85
|
prologue:
|
80
86
|
commands:
|
81
|
-
- cache restore $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)
|
82
|
-
- cache restore $_GEMS_CACHE-gems-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)
|
87
|
+
- cache restore $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec)
|
88
|
+
- cache restore $_GEMS_CACHE-gems-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec)
|
83
89
|
- ./support/bundler_wrapper install --jobs=3 --retry=3
|
84
90
|
jobs:
|
85
91
|
- name: RuboCop
|
@@ -95,8 +101,8 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
95
101
|
epilogue:
|
96
102
|
on_pass:
|
97
103
|
commands:
|
98
|
-
- cache store $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE) .bundle
|
99
|
-
- cache store $_GEMS_CACHE-gems-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE) $HOME/.gem
|
104
|
+
- cache store $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec) .bundle
|
105
|
+
- cache store $_GEMS_CACHE-gems-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec) $HOME/.gem
|
100
106
|
- name: Other linters
|
101
107
|
dependencies: []
|
102
108
|
task:
|
@@ -143,16 +149,16 @@ matrix:
|
|
143
149
|
value: "1"
|
144
150
|
prologue: # Shared for all jobs in the build matrix
|
145
151
|
commands:
|
146
|
-
- cache restore $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)
|
147
|
-
- cache restore $_GEMS_CACHE-gems-$RUBY_VERSION-$(checksum $BUNDLE_GEMFILE)
|
152
|
+
- cache restore $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec)
|
153
|
+
- cache restore $_GEMS_CACHE-gems-$RUBY_VERSION-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec)
|
148
154
|
- ./support/install_deps
|
149
155
|
- bundle config set clean 'true'
|
150
156
|
- ./support/bundler_wrapper install --jobs=3 --retry=3
|
151
157
|
epilogue: # Shared for all jobs in the build matrix
|
152
158
|
on_pass:
|
153
159
|
commands:
|
154
|
-
- cache store $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE) .bundle
|
155
|
-
- cache store $_GEMS_CACHE-gems-$RUBY_VERSION-$(checksum $BUNDLE_GEMFILE) $HOME/.gem
|
160
|
+
- cache store $_BUNDLER_CACHE-bundler-$RUBY_VERSION-$GEMSET-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec) .bundle
|
161
|
+
- cache store $_GEMS_CACHE-gems-$RUBY_VERSION-$(checksum $BUNDLE_GEMFILE)-$(checksum appsignal.gemspec) $HOME/.gem
|
156
162
|
on_fail:
|
157
163
|
commands:
|
158
164
|
- "[ -e ext/install.report ] && cat ext/install.report || echo 'No ext/install.report file found'"
|
@@ -196,16 +202,16 @@ matrix:
|
|
196
202
|
- ruby: "2.5.8"
|
197
203
|
gems: "minimal"
|
198
204
|
- ruby: "2.6.9"
|
199
|
-
- ruby: "2.7.
|
200
|
-
- ruby: "3.0.
|
201
|
-
- ruby: "3.1.
|
202
|
-
- ruby: "3.2.0-
|
203
|
-
- ruby: "jruby-9.2.19.0"
|
204
|
-
gems: "minimal"
|
205
|
+
- ruby: "2.7.7"
|
206
|
+
- ruby: "3.0.4"
|
207
|
+
- ruby: "3.1.2"
|
208
|
+
- ruby: "3.2.0-preview3"
|
205
209
|
env_vars:
|
206
|
-
- name: "
|
207
|
-
value: "
|
208
|
-
- ruby: "jruby-9.3.
|
210
|
+
- name: "_LIBYAML"
|
211
|
+
value: "1"
|
212
|
+
- ruby: "jruby-9.3.9.0"
|
213
|
+
gems: "minimal"
|
214
|
+
- ruby: "jruby-9.4.0.0"
|
209
215
|
gems: "minimal"
|
210
216
|
gems:
|
211
217
|
- gem: "no_dependencies"
|
@@ -217,15 +223,15 @@ matrix:
|
|
217
223
|
- gem: "psych-3"
|
218
224
|
only:
|
219
225
|
ruby:
|
220
|
-
- "3.0.
|
221
|
-
- "3.1.
|
222
|
-
- "3.2.0-
|
226
|
+
- "3.0.4"
|
227
|
+
- "3.1.2"
|
228
|
+
- "3.2.0-preview3"
|
223
229
|
- gem: "psych-4"
|
224
230
|
only:
|
225
231
|
ruby:
|
226
|
-
- "3.0.
|
227
|
-
- "3.1.
|
228
|
-
- "3.2.0-
|
232
|
+
- "3.0.4"
|
233
|
+
- "3.1.2"
|
234
|
+
- "3.2.0-preview3"
|
229
235
|
- gem: "que"
|
230
236
|
- gem: "que_beta"
|
231
237
|
- gem: "rails-3.2"
|
@@ -258,7 +264,7 @@ matrix:
|
|
258
264
|
- "2.4.10"
|
259
265
|
- "2.5.8"
|
260
266
|
- "2.6.9"
|
261
|
-
- "2.7.
|
267
|
+
- "2.7.7"
|
262
268
|
- gem: "rails-5.1"
|
263
269
|
only:
|
264
270
|
ruby:
|
@@ -269,7 +275,7 @@ matrix:
|
|
269
275
|
- "2.4.10"
|
270
276
|
- "2.5.8"
|
271
277
|
- "2.6.9"
|
272
|
-
- "2.7.
|
278
|
+
- "2.7.7"
|
273
279
|
- gem: "rails-5.2"
|
274
280
|
only:
|
275
281
|
ruby:
|
@@ -280,34 +286,34 @@ matrix:
|
|
280
286
|
- "2.4.10"
|
281
287
|
- "2.5.8"
|
282
288
|
- "2.6.9"
|
283
|
-
- "2.7.
|
284
|
-
- "jruby-9.
|
289
|
+
- "2.7.7"
|
290
|
+
- "jruby-9.3.9.0"
|
285
291
|
- gem: "rails-6.0"
|
286
292
|
only:
|
287
293
|
ruby:
|
288
294
|
- "2.5.8"
|
289
295
|
- "2.6.9"
|
290
|
-
- "2.7.
|
291
|
-
- "3.0.
|
292
|
-
- "jruby-9.
|
296
|
+
- "2.7.7"
|
297
|
+
- "3.0.4"
|
298
|
+
- "jruby-9.4.0.0"
|
293
299
|
- gem: "rails-6.1"
|
294
300
|
only:
|
295
301
|
ruby:
|
296
302
|
- "2.5.8"
|
297
303
|
- "2.6.9"
|
298
|
-
- "2.7.
|
299
|
-
- "3.0.
|
300
|
-
- "3.1.
|
301
|
-
- "3.2.0-
|
302
|
-
- "jruby-9.
|
303
|
-
- "jruby-9.3.6.0"
|
304
|
+
- "2.7.7"
|
305
|
+
- "3.0.4"
|
306
|
+
- "3.1.2"
|
307
|
+
- "3.2.0-preview3"
|
308
|
+
- "jruby-9.4.0.0"
|
304
309
|
- gem: "rails-7.0"
|
305
310
|
only:
|
306
311
|
ruby:
|
307
|
-
- "2.7.
|
308
|
-
- "3.0.
|
309
|
-
- "3.1.
|
310
|
-
- "3.2.0-
|
312
|
+
- "2.7.7"
|
313
|
+
- "3.0.4"
|
314
|
+
- "3.1.2"
|
315
|
+
- "3.2.0-preview3"
|
316
|
+
- "jruby-9.4.0.0"
|
311
317
|
- gem: "resque-1"
|
312
318
|
bundler: "1.17.3"
|
313
319
|
only:
|
@@ -319,7 +325,7 @@ matrix:
|
|
319
325
|
- "2.4.10"
|
320
326
|
- "2.5.8"
|
321
327
|
- "2.6.9"
|
322
|
-
- "2.7.
|
328
|
+
- "2.7.7"
|
323
329
|
- gem: "resque-2"
|
324
330
|
- gem: "sequel"
|
325
331
|
- gem: "sequel-435"
|
@@ -332,6 +338,6 @@ matrix:
|
|
332
338
|
- "2.4.10"
|
333
339
|
- "2.5.8"
|
334
340
|
- "2.6.9"
|
335
|
-
- "2.7.
|
341
|
+
- "2.7.7"
|
336
342
|
- gem: "sinatra"
|
337
343
|
- gem: "webmachine"
|
data/lib/appsignal/logger.rb
CHANGED
@@ -5,7 +5,7 @@ require "set"
|
|
5
5
|
|
6
6
|
module Appsignal
|
7
7
|
# Logger that flushes logs to the AppSignal logging service
|
8
|
-
class Logger < ::Logger
|
8
|
+
class Logger < ::Logger # rubocop:disable Metrics/ClassLength
|
9
9
|
# Create a new logger instance
|
10
10
|
#
|
11
11
|
# @param group Name of the group for this logger.
|
@@ -20,7 +20,7 @@ module Appsignal
|
|
20
20
|
# We support the various methods in the Ruby
|
21
21
|
# logger class by supplying this method.
|
22
22
|
# @api private
|
23
|
-
def add(severity, message = nil, group = nil)
|
23
|
+
def add(severity, message = nil, group = nil) # rubocop:disable Metrics/CyclomaticComplexity
|
24
24
|
severity ||= UNKNOWN
|
25
25
|
return true if severity < level
|
26
26
|
group = @group if group.nil?
|
@@ -33,6 +33,7 @@ module Appsignal
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
return if message.nil?
|
36
|
+
message = formatter.call(severity, 0, group, message) if formatter
|
36
37
|
severity_number = case severity
|
37
38
|
when DEBUG
|
38
39
|
2
|
@@ -64,6 +65,7 @@ module Appsignal
|
|
64
65
|
return if DEBUG < level
|
65
66
|
message = yield if message.nil? && block_given?
|
66
67
|
return if message.nil?
|
68
|
+
message = formatter.call(DEBUG, 0, @group, message) if formatter
|
67
69
|
Appsignal::Extension.log(
|
68
70
|
@group,
|
69
71
|
2,
|
@@ -80,6 +82,7 @@ module Appsignal
|
|
80
82
|
return if INFO < level
|
81
83
|
message = yield if message.nil? && block_given?
|
82
84
|
return if message.nil?
|
85
|
+
message = formatter.call(INFO, 0, @group, message) if formatter
|
83
86
|
Appsignal::Extension.log(
|
84
87
|
@group,
|
85
88
|
3,
|
@@ -96,6 +99,7 @@ module Appsignal
|
|
96
99
|
return if WARN < level
|
97
100
|
message = yield if message.nil? && block_given?
|
98
101
|
return if message.nil?
|
102
|
+
message = formatter.call(WARN, 0, @group, message) if formatter
|
99
103
|
Appsignal::Extension.log(
|
100
104
|
@group,
|
101
105
|
5,
|
@@ -112,6 +116,7 @@ module Appsignal
|
|
112
116
|
return if ERROR < level
|
113
117
|
message = yield if message.nil? && block_given?
|
114
118
|
return if message.nil?
|
119
|
+
message = formatter.call(ERROR, 0, @group, message) if formatter
|
115
120
|
Appsignal::Extension.log(
|
116
121
|
@group,
|
117
122
|
6,
|
@@ -128,6 +133,7 @@ module Appsignal
|
|
128
133
|
return if FATAL < level
|
129
134
|
message = yield if message.nil? && block_given?
|
130
135
|
return if message.nil?
|
136
|
+
message = formatter.call(FATAL, 0, @group, message) if formatter
|
131
137
|
Appsignal::Extension.log(
|
132
138
|
@group,
|
133
139
|
7,
|
data/lib/appsignal/probes/mri.rb
CHANGED
@@ -18,17 +18,38 @@ module Appsignal
|
|
18
18
|
def call
|
19
19
|
stat = RubyVM.stat
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
21
|
+
constant_cache_invalidations = stat[:constant_cache_invalidations]
|
22
|
+
if constant_cache_invalidations
|
23
|
+
set_gauge(
|
24
|
+
"ruby_vm",
|
25
|
+
constant_cache_invalidations,
|
26
|
+
:metric => :constant_cache_invalidations
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
constant_cache_misses = stat[:constant_cache_misses]
|
31
|
+
if constant_cache_misses
|
32
|
+
set_gauge(
|
33
|
+
"ruby_vm",
|
34
|
+
constant_cache_misses,
|
35
|
+
:metric => :constant_cache_misses
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
class_serial = stat[:class_serial]
|
40
|
+
if class_serial
|
41
|
+
set_gauge("ruby_vm", class_serial, :metric => :class_serial)
|
42
|
+
end
|
43
|
+
|
44
|
+
global_constant_state =
|
45
|
+
stat[:constant_cache] ? stat[:constant_cache].values.sum : stat[:global_constant_state]
|
46
|
+
if global_constant_state
|
47
|
+
set_gauge(
|
48
|
+
"ruby_vm",
|
49
|
+
global_constant_state,
|
50
|
+
:metric => :global_constant_state
|
51
|
+
)
|
52
|
+
end
|
32
53
|
|
33
54
|
set_gauge("thread_count", Thread.list.size)
|
34
55
|
if Appsignal::GarbageCollection.enabled?
|
data/lib/appsignal/version.rb
CHANGED
@@ -42,6 +42,20 @@ describe Appsignal::Logger do
|
|
42
42
|
logger.add(::Logger::DEBUG, "Log message")
|
43
43
|
end
|
44
44
|
end
|
45
|
+
|
46
|
+
context "with a formatter set" do
|
47
|
+
before do
|
48
|
+
logger.formatter = proc do |_level, _timestamp, _appname, message|
|
49
|
+
"formatted: '#{message}'"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should log with a level, message and group" do
|
54
|
+
expect(Appsignal::Extension).to receive(:log)
|
55
|
+
.with("other_group", 3, "formatted: 'Log message'", instance_of(Appsignal::Extension::Data))
|
56
|
+
logger.add(::Logger::INFO, "Log message", "other_group")
|
57
|
+
end
|
58
|
+
end
|
45
59
|
end
|
46
60
|
|
47
61
|
[
|
@@ -89,6 +103,20 @@ describe Appsignal::Logger do
|
|
89
103
|
end
|
90
104
|
end
|
91
105
|
end
|
106
|
+
|
107
|
+
context "with a formatter set" do
|
108
|
+
before do
|
109
|
+
logger.formatter = proc do |_level, _timestamp, _appname, message|
|
110
|
+
"formatted: '#{message}'"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should log with a level, message and group" do
|
115
|
+
expect(Appsignal::Extension).to receive(:log)
|
116
|
+
.with("group", method[1], "formatted: 'Log message'", instance_of(Appsignal::Extension::Data))
|
117
|
+
logger.send(method[0], "Log message")
|
118
|
+
end
|
119
|
+
end
|
92
120
|
end
|
93
121
|
end
|
94
122
|
end
|
@@ -42,10 +42,15 @@ describe Appsignal::Probes::MriProbe do
|
|
42
42
|
allow(GC::Profiler).to receive(:enabled?).and_return(true)
|
43
43
|
end
|
44
44
|
|
45
|
-
it "should track vm metrics" do
|
45
|
+
it "should track vm cache metrics" do
|
46
46
|
probe.call
|
47
|
-
|
48
|
-
|
47
|
+
if DependencyHelper.ruby_3_2_or_newer?
|
48
|
+
expect_gauge_value("ruby_vm", :tags => { :metric => :constant_cache_invalidations })
|
49
|
+
expect_gauge_value("ruby_vm", :tags => { :metric => :constant_cache_misses })
|
50
|
+
else
|
51
|
+
expect_gauge_value("ruby_vm", :tags => { :metric => :class_serial })
|
52
|
+
expect_gauge_value("ruby_vm", :tags => { :metric => :global_constant_state })
|
53
|
+
end
|
49
54
|
end
|
50
55
|
|
51
56
|
it "tracks thread counts" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appsignal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.2
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Robert Beekman
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-12-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rack
|
@@ -448,7 +448,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
448
448
|
- !ruby/object:Gem::Version
|
449
449
|
version: '0'
|
450
450
|
requirements: []
|
451
|
-
rubygems_version: 3.3.
|
451
|
+
rubygems_version: 3.3.26
|
452
452
|
signing_key:
|
453
453
|
specification_version: 4
|
454
454
|
summary: Logs performance and exception data from your app to appsignal.com
|