loga 2.8.1 → 2.9.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/.github/workflows/build-and-test.yml +4 -4
- data/.github/workflows/publish-gem.yml +1 -1
- data/.rubocop.yml +6 -11
- data/.rubocop_todo.yml +67 -8
- data/Appraisals +73 -24
- data/CHANGELOG.md +8 -0
- data/Gemfile +10 -8
- data/README.md +1 -1
- data/gemfiles/rails60.gemfile +10 -8
- data/gemfiles/rails61.gemfile +10 -8
- data/gemfiles/rails70.gemfile +11 -8
- data/gemfiles/rails71.gemfile +11 -8
- data/gemfiles/rails72.gemfile +38 -0
- data/gemfiles/rails80.gemfile +38 -0
- data/gemfiles/sidekiq51.gemfile +11 -8
- data/gemfiles/sidekiq60.gemfile +11 -8
- data/gemfiles/sidekiq61.gemfile +11 -8
- data/gemfiles/sidekiq62.gemfile +11 -8
- data/gemfiles/sidekiq63.gemfile +11 -8
- data/gemfiles/sidekiq64.gemfile +11 -8
- data/gemfiles/sidekiq65.gemfile +11 -8
- data/gemfiles/sidekiq70.gemfile +11 -8
- data/gemfiles/sidekiq71.gemfile +11 -8
- data/gemfiles/{sidekiq7.gemfile → sidekiq72.gemfile} +12 -9
- data/gemfiles/sidekiq73.gemfile +36 -0
- data/gemfiles/sidekiq80.gemfile +36 -0
- data/gemfiles/sinatra14.gemfile +11 -8
- data/gemfiles/sinatra2.gemfile +11 -8
- data/gemfiles/sinatra3.gemfile +11 -8
- data/gemfiles/sinatra4.gemfile +11 -8
- data/gemfiles/unit.gemfile +10 -8
- data/lib/loga/parameter_filter.rb +0 -2
- data/lib/loga/rack/request.rb +2 -2
- data/lib/loga/rack/request_id.rb +2 -2
- data/lib/loga/railtie.rb +1 -1
- data/lib/loga/sidekiq.rb +11 -0
- data/lib/loga/sidekiq8/job_logger.rb +13 -0
- data/lib/loga/tagged_logging.rb +2 -2
- data/lib/loga/version.rb +1 -1
- data/spec/fixtures/rails71.rb +1 -1
- data/spec/fixtures/rails72.rb +80 -0
- data/spec/fixtures/rails80.rb +80 -0
- data/spec/integration/sidekiq8_spec.rb +193 -0
- data/spec/integration/sinatra_spec.rb +10 -3
- data/spec/loga/sidekiq_latest/job_logger_spec.rb +138 -0
- data/spec/loga/sidekiq_spec.rb +15 -3
- data/spec/spec_helper.rb +8 -2
- data/spec/support/helpers.rb +8 -0
- data/spec/support/request_spec.rb +8 -1
- data/spec/unit/loga/formatters/gelf_formatter_spec.rb +7 -1
- data/spec/unit/loga/formatters/simple_formatter_spec.rb +20 -5
- metadata +17 -9
- data/spec/loga/sidekiq7/job_logger_spec.rb +0 -127
data/spec/loga/sidekiq_spec.rb
CHANGED
@@ -32,11 +32,23 @@ RSpec.describe Loga::Sidekiq do
|
|
32
32
|
|
33
33
|
m = ENV['BUNDLE_GEMFILE'].match(/sidekiq(?<version>\d+)/)
|
34
34
|
|
35
|
+
job_logger =
|
36
|
+
if Sidekiq.respond_to?(:options)
|
37
|
+
Sidekiq.options[:job_logger]
|
38
|
+
else
|
39
|
+
sidekiq_config = Sidekiq.instance_variable_get(:@config)
|
40
|
+
sidekiq_config && sidekiq_config[:job_logger]
|
41
|
+
end
|
42
|
+
|
35
43
|
case m['version']
|
36
44
|
when '51'
|
37
|
-
expect(
|
38
|
-
when '6'
|
39
|
-
expect(
|
45
|
+
expect(job_logger).to eq(Loga::Sidekiq5::JobLogger)
|
46
|
+
when '6', '60', '61', '62', '63', '64', '65'
|
47
|
+
expect(job_logger).to eq(Loga::Sidekiq6::JobLogger)
|
48
|
+
when '7', '70', '71', '72', '73'
|
49
|
+
expect(job_logger).to eq(Loga::Sidekiq7::JobLogger)
|
50
|
+
when '8', '80'
|
51
|
+
expect(job_logger).to eq(Loga::Sidekiq8::JobLogger)
|
40
52
|
end
|
41
53
|
end
|
42
54
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -59,10 +59,16 @@ when /sidekiq(?<version>\d+)/
|
|
59
59
|
'spec/loga/sidekiq6/**/*_spec.rb',
|
60
60
|
'spec/loga/sidekiq_spec.rb',
|
61
61
|
].join(',')
|
62
|
-
when '7', '70', '71'
|
62
|
+
when '7', '70', '71', '72', '73'
|
63
63
|
rspec_pattern = [
|
64
64
|
'spec/integration/sidekiq7_spec.rb',
|
65
|
-
'spec/loga/
|
65
|
+
'spec/loga/sidekiq_latest/**/*_spec.rb',
|
66
|
+
'spec/loga/sidekiq_spec.rb',
|
67
|
+
].join(',')
|
68
|
+
when '8', '80'
|
69
|
+
rspec_pattern = [
|
70
|
+
'spec/integration/sidekiq8_spec.rb',
|
71
|
+
'spec/loga/sidekiq_latest/**/*_spec.rb',
|
66
72
|
'spec/loga/sidekiq_spec.rb',
|
67
73
|
].join(',')
|
68
74
|
else
|
data/spec/support/helpers.rb
CHANGED
@@ -97,6 +97,13 @@ RSpec.shared_examples 'request logger' do
|
|
97
97
|
{ username: 'yoshi' },
|
98
98
|
'HTTP_USER_AGENT' => 'Chrome', 'HTTP_X_REQUEST_ID' => '471a34dc'
|
99
99
|
|
100
|
+
method_missing_exception =
|
101
|
+
if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('3.4.0dev')
|
102
|
+
"undefined method 'name' for nil"
|
103
|
+
else
|
104
|
+
"undefined method `name' for nil"
|
105
|
+
end
|
106
|
+
|
100
107
|
expect(last_log_entry).to include(
|
101
108
|
'version' => '1.1',
|
102
109
|
'host' => 'bird.example.com',
|
@@ -115,7 +122,7 @@ RSpec.shared_examples 'request logger' do
|
|
115
122
|
'_request.request_id' => '471a34dc',
|
116
123
|
'_request.duration' => 0,
|
117
124
|
'_exception.klass' => 'NoMethodError',
|
118
|
-
'_exception.message' => start_with(
|
125
|
+
'_exception.message' => start_with(method_missing_exception),
|
119
126
|
'_exception.backtrace' => be_a(String),
|
120
127
|
'_tags' => '471a34dc TEST_TAG',
|
121
128
|
)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
|
+
require 'ostruct'
|
4
5
|
|
5
6
|
describe Loga::Formatters::GELFFormatter do
|
6
7
|
subject { described_class.new(params) }
|
@@ -65,7 +66,12 @@ describe Loga::Formatters::GELFFormatter do
|
|
65
66
|
let(:message) { { message: 'Wooden house' } }
|
66
67
|
|
67
68
|
it 'the short_message is a String reprentation of that Hash' do
|
68
|
-
expect(json['short_message']).to eq(
|
69
|
+
expect(json['short_message']).to eq(
|
70
|
+
with_new_ruby(
|
71
|
+
test: '{message: "Wooden house"}',
|
72
|
+
else: '{:message=>"Wooden house"}',
|
73
|
+
),
|
74
|
+
)
|
69
75
|
end
|
70
76
|
|
71
77
|
include_examples 'valid GELF message'
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
require 'loga/formatters/simple_formatter'
|
5
5
|
|
6
|
-
# rubocop:disable
|
6
|
+
# rubocop:disable Layout/LineLength
|
7
7
|
describe Loga::Formatters::SimpleFormatter do
|
8
8
|
before { allow(Process).to receive(:pid).and_return(999) }
|
9
9
|
|
@@ -32,7 +32,12 @@ describe Loga::Formatters::SimpleFormatter do
|
|
32
32
|
let(:message) { { record: 'Wooden house' } }
|
33
33
|
|
34
34
|
specify do
|
35
|
-
expect(subject).to eq(
|
35
|
+
expect(subject).to eq(
|
36
|
+
with_new_ruby(
|
37
|
+
test: "I, #{time_pid} {record: \"Wooden house\"}\n",
|
38
|
+
else: "I, #{time_pid} {:record=>\"Wooden house\"}\n",
|
39
|
+
),
|
40
|
+
)
|
36
41
|
end
|
37
42
|
end
|
38
43
|
|
@@ -80,7 +85,12 @@ describe Loga::Formatters::SimpleFormatter do
|
|
80
85
|
end
|
81
86
|
|
82
87
|
specify do
|
83
|
-
expect(subject).to eq(
|
88
|
+
expect(subject).to eq(
|
89
|
+
with_new_ruby(
|
90
|
+
test: "I, #{time_pid} Hello World data={admin: true, user: {email: \"hello@world.com\"}}\n",
|
91
|
+
else: "I, #{time_pid} Hello World data={:admin=>true, :user=>{:email=>\"hello@world.com\"}}\n",
|
92
|
+
),
|
93
|
+
)
|
84
94
|
end
|
85
95
|
end
|
86
96
|
|
@@ -94,7 +104,12 @@ describe Loga::Formatters::SimpleFormatter do
|
|
94
104
|
end
|
95
105
|
|
96
106
|
specify do
|
97
|
-
expect(subject).to eq(
|
107
|
+
expect(subject).to eq(
|
108
|
+
with_new_ruby(
|
109
|
+
test: "I, #{time_pid} Hello World type=request data={ssl: true}\n",
|
110
|
+
else: "I, #{time_pid} Hello World type=request data={:ssl=>true}\n",
|
111
|
+
),
|
112
|
+
)
|
98
113
|
end
|
99
114
|
end
|
100
115
|
end
|
@@ -129,4 +144,4 @@ describe Loga::Formatters::SimpleFormatter do
|
|
129
144
|
end
|
130
145
|
end
|
131
146
|
end
|
132
|
-
# rubocop:enable
|
147
|
+
# rubocop:enable Layout/LineLength
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: loga
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Funding Circle
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: activesupport
|
@@ -65,6 +64,8 @@ files:
|
|
65
64
|
- gemfiles/rails61.gemfile
|
66
65
|
- gemfiles/rails70.gemfile
|
67
66
|
- gemfiles/rails71.gemfile
|
67
|
+
- gemfiles/rails72.gemfile
|
68
|
+
- gemfiles/rails80.gemfile
|
68
69
|
- gemfiles/sidekiq51.gemfile
|
69
70
|
- gemfiles/sidekiq60.gemfile
|
70
71
|
- gemfiles/sidekiq61.gemfile
|
@@ -72,9 +73,11 @@ files:
|
|
72
73
|
- gemfiles/sidekiq63.gemfile
|
73
74
|
- gemfiles/sidekiq64.gemfile
|
74
75
|
- gemfiles/sidekiq65.gemfile
|
75
|
-
- gemfiles/sidekiq7.gemfile
|
76
76
|
- gemfiles/sidekiq70.gemfile
|
77
77
|
- gemfiles/sidekiq71.gemfile
|
78
|
+
- gemfiles/sidekiq72.gemfile
|
79
|
+
- gemfiles/sidekiq73.gemfile
|
80
|
+
- gemfiles/sidekiq80.gemfile
|
78
81
|
- gemfiles/sinatra14.gemfile
|
79
82
|
- gemfiles/sinatra2.gemfile
|
80
83
|
- gemfiles/sinatra3.gemfile
|
@@ -100,6 +103,7 @@ files:
|
|
100
103
|
- lib/loga/sidekiq5/job_logger.rb
|
101
104
|
- lib/loga/sidekiq6/job_logger.rb
|
102
105
|
- lib/loga/sidekiq7/job_logger.rb
|
106
|
+
- lib/loga/sidekiq8/job_logger.rb
|
103
107
|
- lib/loga/tagged_logging.rb
|
104
108
|
- lib/loga/utilities.rb
|
105
109
|
- lib/loga/version.rb
|
@@ -110,6 +114,8 @@ files:
|
|
110
114
|
- spec/fixtures/rails61.rb
|
111
115
|
- spec/fixtures/rails70.rb
|
112
116
|
- spec/fixtures/rails71.rb
|
117
|
+
- spec/fixtures/rails72.rb
|
118
|
+
- spec/fixtures/rails80.rb
|
113
119
|
- spec/fixtures/random_bin
|
114
120
|
- spec/integration/rails/action_mailer_spec.rb
|
115
121
|
- spec/integration/rails/railtie_spec.rb
|
@@ -119,10 +125,11 @@ files:
|
|
119
125
|
- spec/integration/sidekiq61_spec.rb
|
120
126
|
- spec/integration/sidekiq65_spec.rb
|
121
127
|
- spec/integration/sidekiq7_spec.rb
|
128
|
+
- spec/integration/sidekiq8_spec.rb
|
122
129
|
- spec/integration/sinatra_spec.rb
|
123
130
|
- spec/loga/sidekiq5/job_logger_spec.rb
|
124
131
|
- spec/loga/sidekiq6/job_logger_spec.rb
|
125
|
-
- spec/loga/
|
132
|
+
- spec/loga/sidekiq_latest/job_logger_spec.rb
|
126
133
|
- spec/loga/sidekiq_spec.rb
|
127
134
|
- spec/spec_helper.rb
|
128
135
|
- spec/support/gethostname_shared.rb
|
@@ -144,7 +151,6 @@ homepage: https://github.com/FundingCircle/loga
|
|
144
151
|
licenses:
|
145
152
|
- BSD-3-Clause
|
146
153
|
metadata: {}
|
147
|
-
post_install_message:
|
148
154
|
rdoc_options: []
|
149
155
|
require_paths:
|
150
156
|
- lib
|
@@ -159,8 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
165
|
- !ruby/object:Gem::Version
|
160
166
|
version: '0'
|
161
167
|
requirements: []
|
162
|
-
rubygems_version: 3.
|
163
|
-
signing_key:
|
168
|
+
rubygems_version: 3.6.9
|
164
169
|
specification_version: 4
|
165
170
|
summary: Facilitate log aggregation via unified logging
|
166
171
|
test_files:
|
@@ -170,6 +175,8 @@ test_files:
|
|
170
175
|
- spec/fixtures/rails61.rb
|
171
176
|
- spec/fixtures/rails70.rb
|
172
177
|
- spec/fixtures/rails71.rb
|
178
|
+
- spec/fixtures/rails72.rb
|
179
|
+
- spec/fixtures/rails80.rb
|
173
180
|
- spec/fixtures/random_bin
|
174
181
|
- spec/integration/rails/action_mailer_spec.rb
|
175
182
|
- spec/integration/rails/railtie_spec.rb
|
@@ -179,10 +186,11 @@ test_files:
|
|
179
186
|
- spec/integration/sidekiq61_spec.rb
|
180
187
|
- spec/integration/sidekiq65_spec.rb
|
181
188
|
- spec/integration/sidekiq7_spec.rb
|
189
|
+
- spec/integration/sidekiq8_spec.rb
|
182
190
|
- spec/integration/sinatra_spec.rb
|
183
191
|
- spec/loga/sidekiq5/job_logger_spec.rb
|
184
192
|
- spec/loga/sidekiq6/job_logger_spec.rb
|
185
|
-
- spec/loga/
|
193
|
+
- spec/loga/sidekiq_latest/job_logger_spec.rb
|
186
194
|
- spec/loga/sidekiq_spec.rb
|
187
195
|
- spec/spec_helper.rb
|
188
196
|
- spec/support/gethostname_shared.rb
|
@@ -1,127 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
require 'loga/sidekiq7/job_logger'
|
5
|
-
|
6
|
-
RSpec.describe Loga::Sidekiq7::JobLogger do
|
7
|
-
subject(:job_logger) { described_class.new(logger) }
|
8
|
-
|
9
|
-
let(:target) { StringIO.new }
|
10
|
-
|
11
|
-
let(:json_line) do
|
12
|
-
target.rewind
|
13
|
-
JSON.parse(target.read.split("\n").last)
|
14
|
-
end
|
15
|
-
|
16
|
-
let(:logger) { Loga.logger }
|
17
|
-
|
18
|
-
before do
|
19
|
-
Loga.reset
|
20
|
-
|
21
|
-
Loga.configure(
|
22
|
-
service_name: 'hello_world_app',
|
23
|
-
service_version: '1.0',
|
24
|
-
device: target,
|
25
|
-
format: :gelf,
|
26
|
-
)
|
27
|
-
end
|
28
|
-
|
29
|
-
# https://github.com/mperham/sidekiq/blob/v6.1.2/lib/sidekiq/job_logger.rb
|
30
|
-
it 'inherits from ::Sidekiq::JobLogger' do
|
31
|
-
expect(subject).to be_a(Sidekiq::JobLogger)
|
32
|
-
end
|
33
|
-
|
34
|
-
describe '#call' do
|
35
|
-
context 'when the job passess successfully' do
|
36
|
-
let(:item_data) do
|
37
|
-
{
|
38
|
-
'class' => 'HardWorker',
|
39
|
-
'args' => ['asd'],
|
40
|
-
'retry' => true,
|
41
|
-
'queue' => 'default',
|
42
|
-
'jid' => '591f6f66ee0d218fb451dfb6',
|
43
|
-
'created_at' => 1_528_799_582.904939,
|
44
|
-
'enqueued_at' => 1_528_799_582.9049861,
|
45
|
-
}
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'has the the required attributes on call' do
|
49
|
-
job_logger.call(item_data, 'queue') do
|
50
|
-
# something
|
51
|
-
end
|
52
|
-
|
53
|
-
expected_body = {
|
54
|
-
'version' => '1.1',
|
55
|
-
'level' => 6,
|
56
|
-
'_type' => 'sidekiq',
|
57
|
-
'_created_at' => 1_528_799_582.904939,
|
58
|
-
'_enqueued_at' => 1_528_799_582.9049861,
|
59
|
-
'_jid' => '591f6f66ee0d218fb451dfb6',
|
60
|
-
'_retry' => true,
|
61
|
-
'_queue' => 'default',
|
62
|
-
'_service.name' => 'hello_world_app',
|
63
|
-
'_class' => 'HardWorker',
|
64
|
-
'_service.version' => '1.0',
|
65
|
-
'_tags' => '',
|
66
|
-
'_params' => ['asd'],
|
67
|
-
}
|
68
|
-
|
69
|
-
aggregate_failures do
|
70
|
-
expect(json_line).to include(expected_body)
|
71
|
-
expect(json_line['_duration']).to be_a(Float)
|
72
|
-
expect(json_line['timestamp']).to be_a(Float)
|
73
|
-
expect(json_line['host']).to be_a(String)
|
74
|
-
expect(json_line['short_message']).to match(/HardWorker with jid:*/)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
context 'when the job fails' do
|
80
|
-
let(:item_data) do
|
81
|
-
{
|
82
|
-
'class' => 'HardWorker',
|
83
|
-
'args' => ['asd'],
|
84
|
-
'retry' => true,
|
85
|
-
'queue' => 'default',
|
86
|
-
'jid' => '591f6f66ee0d218fb451dfb6',
|
87
|
-
'created_at' => 1_528_799_582.904939,
|
88
|
-
'enqueued_at' => 1_528_799_582.9049861,
|
89
|
-
}
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'has the the required attributes on call' do
|
93
|
-
failed_job = lambda do
|
94
|
-
job_logger.call(item_data, 'queue') do
|
95
|
-
raise StandardError
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
expected_body = {
|
100
|
-
'version' => '1.1',
|
101
|
-
'level' => 4,
|
102
|
-
'_type' => 'sidekiq',
|
103
|
-
'_created_at' => 1_528_799_582.904939,
|
104
|
-
'_enqueued_at' => 1_528_799_582.9049861,
|
105
|
-
'_jid' => '591f6f66ee0d218fb451dfb6',
|
106
|
-
'_retry' => true,
|
107
|
-
'_queue' => 'default',
|
108
|
-
'_service.name' => 'hello_world_app',
|
109
|
-
'_class' => 'HardWorker',
|
110
|
-
'_service.version' => '1.0',
|
111
|
-
'_tags' => '',
|
112
|
-
'_params' => ['asd'],
|
113
|
-
'_exception' => 'StandardError',
|
114
|
-
}
|
115
|
-
|
116
|
-
aggregate_failures do
|
117
|
-
expect(&failed_job).to raise_error(StandardError)
|
118
|
-
expect(json_line['_duration']).to be_a(Float)
|
119
|
-
expect(json_line).to include(expected_body)
|
120
|
-
expect(json_line['timestamp']).to be_a(Float)
|
121
|
-
expect(json_line['host']).to be_a(String)
|
122
|
-
expect(json_line['short_message']).to match(/HardWorker with jid:*/)
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|