multiple_devices_logger 2.0.2 → 2.0.3
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/VERSION +1 -1
- data/multiple_devices_logger.gemspec +1 -2
- metadata +3 -9
- data/.gitignore +0 -6
- data/.rspec +0 -2
- data/Gemfile +0 -3
- data/Rakefile +0 -10
- data/spec/multiple_devices_logger_spec.rb +0 -508
- data/spec/spec_helper.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c8875aa3e930caeabc8f1da4e1b29e0c0048fcc
|
4
|
+
data.tar.gz: 94dc37b500f66c4ee3cf466085baf6b8a4062cf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06dd0de6cfffb45e360626b98b974e4aff73980b72e64efe9048dc7b0e195c6d82d4abcc2e79b822e39e1efcd0d021496a1011dc8540eb45343a0f001d160044
|
7
|
+
data.tar.gz: 9c5d2050463dad9d124114c479b4b39a4c4444628bc337c3018272558c772983ea3de512c283d19f5cd17122720d4ca861d3c747ee0509557f0c73572c1ab19f
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.0.3
|
@@ -9,8 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.description = 'Logger that support many and different devices for specified levels'
|
10
10
|
s.license = 'MIT'
|
11
11
|
|
12
|
-
s.files = `git ls-files`.split("\n")
|
13
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
12
|
+
s.files = `git ls-files | grep -vE '^(spec/|test/|\\.|Gemfile|Rakefile)'`.split("\n")
|
14
13
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
15
14
|
s.require_paths = ['lib']
|
16
15
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multiple_devices_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexis Toulotte
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -76,17 +76,11 @@ executables: []
|
|
76
76
|
extensions: []
|
77
77
|
extra_rdoc_files: []
|
78
78
|
files:
|
79
|
-
- ".gitignore"
|
80
|
-
- ".rspec"
|
81
|
-
- Gemfile
|
82
79
|
- MIT-LICENSE
|
83
80
|
- README.mdown
|
84
|
-
- Rakefile
|
85
81
|
- VERSION
|
86
82
|
- lib/multiple_devices_logger.rb
|
87
83
|
- multiple_devices_logger.gemspec
|
88
|
-
- spec/multiple_devices_logger_spec.rb
|
89
|
-
- spec/spec_helper.rb
|
90
84
|
homepage: https://github.com/alexistoulotte/multiple_devices_logger
|
91
85
|
licenses:
|
92
86
|
- MIT
|
@@ -107,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
101
|
version: '0'
|
108
102
|
requirements: []
|
109
103
|
rubyforge_project:
|
110
|
-
rubygems_version: 2.5.
|
104
|
+
rubygems_version: 2.5.2
|
111
105
|
signing_key:
|
112
106
|
specification_version: 4
|
113
107
|
summary: Logger than can have many devices
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,508 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe MultipleDevicesLogger do
|
4
|
-
|
5
|
-
let(:logger) { MultipleDevicesLogger.new }
|
6
|
-
|
7
|
-
it 'is a Logger' do
|
8
|
-
expect(logger).to be_a(Logger)
|
9
|
-
end
|
10
|
-
|
11
|
-
describe '#add' do
|
12
|
-
|
13
|
-
before :each do
|
14
|
-
logger.add_device(STDERR, '>= WARN')
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'write to device' do
|
18
|
-
expect(STDERR).to receive(:write).with(/BAM!/)
|
19
|
-
logger.add(Logger::WARN, 'BAM!')
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'use a default formatter' do
|
23
|
-
expect(STDERR).to receive(:write).with(/^W, \[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+ #\d+\] WARN -- MyApp: BAM!\n$/)
|
24
|
-
logger.add(Logger::WARN, 'BAM!', 'MyApp')
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'write to multiple device if configured' do
|
28
|
-
logger.add_device(STDOUT)
|
29
|
-
expect(STDERR).to receive(:write).with(/BAM!/)
|
30
|
-
expect(STDOUT).to receive(:write).with(/BAM!/)
|
31
|
-
logger.add(Logger::WARN, 'BAM!')
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'does not write anything if given severity is lower than configured level' do
|
35
|
-
logger.level = :error
|
36
|
-
expect(STDERR).not_to receive(:write)
|
37
|
-
logger.add(Logger::WARN, 'BAM!')
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'severity is UNKNOWN if not specified' do
|
41
|
-
expect(STDERR).to receive(:write).with(/ANY -- : BIM!/)
|
42
|
-
logger.add(nil, 'BIM!')
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'a block can be given' do
|
46
|
-
expect(STDERR).to receive(:write).with(/BIM!/)
|
47
|
-
logger.add(Logger::ERROR) { 'BIM!' }
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'accepts progname' do
|
51
|
-
expect(STDERR).to receive(:write).with(/FATAL -- MyApp: BAM!/)
|
52
|
-
logger.add(Logger::FATAL, 'BAM!', 'MyApp')
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'returns true' do
|
56
|
-
expect(STDERR).to receive(:write)
|
57
|
-
expect(logger.add(Logger::WARN, 'BAM!')).to be(true)
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'returns true if nothing is written' do
|
61
|
-
logger.level = :error
|
62
|
-
expect(STDERR).not_to receive(:write)
|
63
|
-
expect(logger.add(Logger::WARN, 'BAM!')).to be(true)
|
64
|
-
end
|
65
|
-
|
66
|
-
it 'block is ignored if message is given' do
|
67
|
-
expect(STDERR).to receive(:write).with(/BAM!/)
|
68
|
-
logger.add(Logger::WARN, 'BAM!') { 'BIM!' }
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'message is progname if nil' do
|
72
|
-
expect(STDERR).to receive(:write).with(/WARN -- : BAM!/)
|
73
|
-
logger.add(Logger::WARN, nil, 'BAM!')
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'use formatter set' do
|
77
|
-
logger.add_device(STDERR, '> debug', formatter: -> (severity, time, progname, message) { "Hello #{message}" })
|
78
|
-
expect(STDERR).to receive(:write).with('Hello John')
|
79
|
-
logger.add(Logger::INFO, 'John')
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'use default formatter if not set' do
|
83
|
-
logger.formatter = -> (severity, time, progname, message) { "Hello #{progname}: #{message}" }
|
84
|
-
expect(STDERR).to receive(:write).with('Hello World: cool')
|
85
|
-
logger.add(Logger::WARN, 'cool', 'World')
|
86
|
-
end
|
87
|
-
|
88
|
-
it 'use default formatter if formatter set via #set_formatter does not match severity' do
|
89
|
-
logger.add_device(STDERR, '<= info', formatter: -> (severity, time, progname, message) { "Hello #{message}" })
|
90
|
-
|
91
|
-
expect(STDERR).to receive(:write).with(/WARN -- : John/)
|
92
|
-
logger.add(Logger::WARN, 'John')
|
93
|
-
|
94
|
-
expect(STDERR).to receive(:write).with('Hello John')
|
95
|
-
logger.add(Logger::DEBUG, 'John')
|
96
|
-
|
97
|
-
expect(STDERR).to receive(:write).with('Hello John')
|
98
|
-
logger.add(Logger::INFO, 'John')
|
99
|
-
end
|
100
|
-
|
101
|
-
end
|
102
|
-
|
103
|
-
describe '#add_device' do
|
104
|
-
|
105
|
-
it 'adds a device for all severities if given severity is nil' do
|
106
|
-
expect {
|
107
|
-
logger.add_device(STDOUT)
|
108
|
-
}.to change { logger.devices_for(Logger::INFO).size }.by(1)
|
109
|
-
expect(logger.devices_for(Logger::WARN).first.dev).to be(STDOUT)
|
110
|
-
end
|
111
|
-
|
112
|
-
it 'does not adds to other severities if severity is specified' do
|
113
|
-
logger.add_device(STDERR, Logger::WARN)
|
114
|
-
expect(logger.devices_for(Logger::WARN)).not_to be_empty
|
115
|
-
expect(logger.devices_for(Logger::INFO)).to be_empty
|
116
|
-
expect(logger.devices_for(Logger::ERROR)).to be_empty
|
117
|
-
end
|
118
|
-
|
119
|
-
it 'severity can be specified as constant' do
|
120
|
-
expect {
|
121
|
-
logger.add_device(STDERR, Logger::WARN)
|
122
|
-
}.to change { logger.devices_for(Logger::WARN).size }.by(1)
|
123
|
-
end
|
124
|
-
|
125
|
-
it 'severity can be specified as symbol' do
|
126
|
-
expect {
|
127
|
-
logger.add_device(STDOUT, :warn)
|
128
|
-
}.to change { logger.devices_for(Logger::WARN).size }.by(1)
|
129
|
-
end
|
130
|
-
|
131
|
-
it 'severity can be specified as symbol (ignore case)' do
|
132
|
-
expect {
|
133
|
-
logger.add_device(STDOUT, :waRN)
|
134
|
-
}.to change { logger.devices_for(Logger::WARN).size }.by(1)
|
135
|
-
end
|
136
|
-
|
137
|
-
it 'severity can be specified as string' do
|
138
|
-
expect {
|
139
|
-
logger.add_device(STDOUT, 'fatal')
|
140
|
-
}.to change { logger.devices_for(Logger::FATAL).size }.by(1)
|
141
|
-
end
|
142
|
-
|
143
|
-
it 'severity can be specified as string (ignore case)' do
|
144
|
-
expect {
|
145
|
-
logger.add_device(STDOUT, 'FATal')
|
146
|
-
}.to change { logger.devices_for(Logger::FATAL).size }.by(1)
|
147
|
-
end
|
148
|
-
|
149
|
-
it 'severity can be specified as string (with extra spaces)' do
|
150
|
-
expect {
|
151
|
-
logger.add_device(STDOUT, " fatal \n")
|
152
|
-
}.to change { logger.devices_for(Logger::FATAL).size }.by(1)
|
153
|
-
end
|
154
|
-
|
155
|
-
it 'severity can be specified as integer' do
|
156
|
-
expect {
|
157
|
-
logger.add_device(STDOUT, 0)
|
158
|
-
}.to change { logger.devices_for(Logger::DEBUG).size }.by(1)
|
159
|
-
end
|
160
|
-
|
161
|
-
it 'severity can be specified as integer (as string)' do
|
162
|
-
expect {
|
163
|
-
logger.add_device(STDOUT, '3')
|
164
|
-
}.to change { logger.devices_for(Logger::ERROR).size }.by(1)
|
165
|
-
end
|
166
|
-
|
167
|
-
it 'severity can be specified as integer (as string with spaces)' do
|
168
|
-
expect {
|
169
|
-
logger.add_device(STDOUT, ' 2 ')
|
170
|
-
}.to change { logger.devices_for(Logger::WARN).size }.by(1)
|
171
|
-
end
|
172
|
-
|
173
|
-
it 'many severities can be given' do
|
174
|
-
logger.add_device(STDERR, Logger::DEBUG, Logger::WARN)
|
175
|
-
expect(logger.devices_for(Logger::DEBUG)).not_to be_empty
|
176
|
-
expect(logger.devices_for(Logger::WARN)).not_to be_empty
|
177
|
-
expect(logger.devices_for(Logger::INFO)).to be_empty
|
178
|
-
expect(logger.devices_for(Logger::ERROR)).to be_empty
|
179
|
-
end
|
180
|
-
|
181
|
-
it 'an array of severities can be given' do
|
182
|
-
logger.add_device(STDERR, [Logger::DEBUG, Logger::WARN])
|
183
|
-
expect(logger.devices_for(Logger::DEBUG)).not_to be_empty
|
184
|
-
expect(logger.devices_for(Logger::WARN)).not_to be_empty
|
185
|
-
expect(logger.devices_for(Logger::INFO)).to be_empty
|
186
|
-
end
|
187
|
-
|
188
|
-
it 'avoids doubloons on severities' do
|
189
|
-
logger.add_device(STDOUT, Logger::DEBUG, Logger::INFO, Logger::DEBUG)
|
190
|
-
expect(logger.devices_for(Logger::DEBUG).size).to eq(1)
|
191
|
-
end
|
192
|
-
|
193
|
-
it 'raise an error if severity specified as integer is too high' do
|
194
|
-
expect {
|
195
|
-
logger.add_device(STDERR, 8)
|
196
|
-
}.to raise_error(ArgumentError, 'Invalid log severity: 8')
|
197
|
-
end
|
198
|
-
|
199
|
-
it 'raise an error if severity specified as integer is negative' do
|
200
|
-
expect {
|
201
|
-
logger.add_device(STDERR, -1)
|
202
|
-
}.to raise_error(ArgumentError, 'Invalid log severity: -1')
|
203
|
-
end
|
204
|
-
|
205
|
-
it 'does not add any device if one severity is invalid' do
|
206
|
-
expect {
|
207
|
-
expect {
|
208
|
-
logger.add_device(STDOUT, Logger::DEBUG, 'bim')
|
209
|
-
}.to raise_error(ArgumentError, 'Invalid log severity: "bim"')
|
210
|
-
}.not_to change { logger.devices_for(Logger::DEBUG).size }
|
211
|
-
end
|
212
|
-
|
213
|
-
it 'raise an error if severity is unknown (as string)' do
|
214
|
-
expect {
|
215
|
-
logger.add_device(STDOUT, 'errors')
|
216
|
-
}.to raise_error(ArgumentError, 'Invalid log severity: "errors"')
|
217
|
-
end
|
218
|
-
|
219
|
-
it 'may have many device for a severity' do
|
220
|
-
logger.add_device(STDERR, Logger::INFO).add_device(STDOUT, Logger::INFO)
|
221
|
-
expect(logger.devices_for(Logger::DEBUG)).to be_empty
|
222
|
-
expect(logger.devices_for(Logger::INFO).size).to eq(2)
|
223
|
-
expect(logger.devices_for(Logger::FATAL)).to be_empty
|
224
|
-
end
|
225
|
-
|
226
|
-
it 'returns self' do
|
227
|
-
expect(logger.add_device(STDOUT)).to be(logger)
|
228
|
-
expect(logger.add_device(STDOUT, Logger::DEBUG)).to be(logger)
|
229
|
-
end
|
230
|
-
|
231
|
-
it 'accepts <= operator' do
|
232
|
-
logger.add_device(STDOUT, '<= warn')
|
233
|
-
expect(logger.devices_for(Logger::DEBUG)).not_to be_empty
|
234
|
-
expect(logger.devices_for(Logger::INFO)).not_to be_empty
|
235
|
-
expect(logger.devices_for(Logger::WARN)).not_to be_empty
|
236
|
-
expect(logger.devices_for(Logger::ERROR)).to be_empty
|
237
|
-
end
|
238
|
-
|
239
|
-
it 'accepts < operator' do
|
240
|
-
logger.add_device(STDOUT, '< warn')
|
241
|
-
expect(logger.devices_for(Logger::DEBUG)).not_to be_empty
|
242
|
-
expect(logger.devices_for(Logger::INFO)).not_to be_empty
|
243
|
-
expect(logger.devices_for(Logger::WARN)).to be_empty
|
244
|
-
expect(logger.devices_for(Logger::ERROR)).to be_empty
|
245
|
-
end
|
246
|
-
|
247
|
-
it 'accepts > operator' do
|
248
|
-
logger.add_device(STDOUT, '> error')
|
249
|
-
expect(logger.devices_for(Logger::UNKNOWN)).not_to be_empty
|
250
|
-
expect(logger.devices_for(Logger::FATAL)).not_to be_empty
|
251
|
-
expect(logger.devices_for(Logger::ERROR)).to be_empty
|
252
|
-
end
|
253
|
-
|
254
|
-
it 'accepts >= operator' do
|
255
|
-
logger.add_device(STDOUT, '>= error')
|
256
|
-
expect(logger.devices_for(Logger::UNKNOWN)).not_to be_empty
|
257
|
-
expect(logger.devices_for(Logger::FATAL)).not_to be_empty
|
258
|
-
expect(logger.devices_for(Logger::ERROR)).not_to be_empty
|
259
|
-
expect(logger.devices_for(Logger::WARN)).to be_empty
|
260
|
-
end
|
261
|
-
|
262
|
-
it 'accepts operator with spaces and with a different case' do
|
263
|
-
logger.add_device(STDOUT, " \n > eRRor ")
|
264
|
-
expect(logger.devices_for(Logger::UNKNOWN)).not_to be_empty
|
265
|
-
expect(logger.devices_for(Logger::FATAL)).not_to be_empty
|
266
|
-
expect(logger.devices_for(Logger::ERROR)).to be_empty
|
267
|
-
end
|
268
|
-
|
269
|
-
it 'accepts operator with no spaces' do
|
270
|
-
logger.add_device(STDOUT, ">error")
|
271
|
-
expect(logger.devices_for(Logger::UNKNOWN)).not_to be_empty
|
272
|
-
expect(logger.devices_for(Logger::FATAL)).not_to be_empty
|
273
|
-
expect(logger.devices_for(Logger::ERROR)).to be_empty
|
274
|
-
end
|
275
|
-
|
276
|
-
it 'raise an error if operator is invalid' do
|
277
|
-
expect {
|
278
|
-
logger.add_device(STDERR, '!> error')
|
279
|
-
}.to raise_error(ArgumentError, 'Invalid log severity: "!> error"')
|
280
|
-
end
|
281
|
-
|
282
|
-
it 'raise an error if severity is invalid (with operator)' do
|
283
|
-
expect {
|
284
|
-
logger.add_device(STDERR, '>= foo')
|
285
|
-
}.to raise_error(ArgumentError, 'Invalid log severity: "foo"')
|
286
|
-
end
|
287
|
-
|
288
|
-
it 'avoid doubloons with operator' do
|
289
|
-
logger.add_device(STDERR, Logger::INFO, '>= DEBUG')
|
290
|
-
expect(logger.devices_for(Logger::DEBUG).size).to eq(1)
|
291
|
-
expect(logger.devices_for(Logger::INFO).size).to eq(1)
|
292
|
-
expect(logger.devices_for(Logger::WARN).size).to eq(1)
|
293
|
-
end
|
294
|
-
|
295
|
-
it 'may have many devices for a severity with an operator' do
|
296
|
-
logger.add_device(STDERR, Logger::INFO).add_device(STDOUT, '<= error')
|
297
|
-
expect(logger.devices_for(Logger::DEBUG).size).to eq(1)
|
298
|
-
expect(logger.devices_for(Logger::INFO).size).to eq(2)
|
299
|
-
expect(logger.devices_for(Logger::FATAL)).to be_empty
|
300
|
-
end
|
301
|
-
|
302
|
-
it 'register LogDevice directly if a LogDevice is given' do
|
303
|
-
device = Logger::LogDevice.new(STDERR)
|
304
|
-
logger.add_device(device, Logger::INFO)
|
305
|
-
expect(logger.devices_for(Logger::INFO).first).to be(device)
|
306
|
-
end
|
307
|
-
|
308
|
-
it 'given options are forwared to LogDevice constructor' do
|
309
|
-
device = Logger::LogDevice.new(STDOUT)
|
310
|
-
expect(Logger::LogDevice).to receive(:new).with(STDOUT, foo: 'bar').and_return(device)
|
311
|
-
logger.add_device(STDOUT, Logger::INFO, foo: 'bar')
|
312
|
-
end
|
313
|
-
|
314
|
-
it 'does not forward :formatter option to log device constructor' do
|
315
|
-
device = Logger::LogDevice.new(STDOUT)
|
316
|
-
expect(Logger::LogDevice).to receive(:new).with(STDOUT, foo: 'bar').and_return(device)
|
317
|
-
logger.add_device(STDOUT, Logger::INFO, foo: 'bar', formatter: -> {})
|
318
|
-
end
|
319
|
-
|
320
|
-
it 'raise an error for default severity' do
|
321
|
-
expect {
|
322
|
-
logger.add_device(STDERR, 'default')
|
323
|
-
}.to raise_error(ArgumentError, 'Invalid log severity: "default"')
|
324
|
-
end
|
325
|
-
|
326
|
-
it 'raise an error if formatter is not a proc' do
|
327
|
-
expect {
|
328
|
-
logger.add_device(STDOUT, formatter: :foo)
|
329
|
-
}.to raise_error(ArgumentError, 'Formatter must respond to #call, :foo given')
|
330
|
-
end
|
331
|
-
|
332
|
-
end
|
333
|
-
|
334
|
-
describe '#clear_devices' do
|
335
|
-
|
336
|
-
it 'removes registered loggers' do
|
337
|
-
logger.add_device(STDERR)
|
338
|
-
expect {
|
339
|
-
logger.clear_devices
|
340
|
-
}.to change { logger.devices_for(Logger::DEBUG) }.to([])
|
341
|
-
end
|
342
|
-
|
343
|
-
end
|
344
|
-
|
345
|
-
describe '#default_device' do
|
346
|
-
|
347
|
-
it 'is nil by default' do
|
348
|
-
expect(logger.default_device).to be_nil
|
349
|
-
end
|
350
|
-
|
351
|
-
it 'can be changed' do
|
352
|
-
logger.default_device = STDERR
|
353
|
-
expect(logger.default_device).not_to be_nil
|
354
|
-
end
|
355
|
-
|
356
|
-
it 'is converted to a LogDevice when set' do
|
357
|
-
logger.default_device = STDERR
|
358
|
-
expect(logger.default_device).to be_a(Logger::LogDevice)
|
359
|
-
expect(logger.default_device.dev).to be(STDERR)
|
360
|
-
end
|
361
|
-
|
362
|
-
it 'is not converted to a LogDevice when a LogDevice is set' do
|
363
|
-
device = Logger::LogDevice.new(STDOUT)
|
364
|
-
logger.default_device = device
|
365
|
-
expect(logger.default_device).to be(device)
|
366
|
-
expect(logger.default_device.dev).to be(STDOUT)
|
367
|
-
end
|
368
|
-
|
369
|
-
end
|
370
|
-
|
371
|
-
describe '#devices_for' do
|
372
|
-
|
373
|
-
it 'accepts strings' do
|
374
|
-
logger.add_device(STDERR, 'warn')
|
375
|
-
expect(logger.devices_for('warn').size).to eq(1)
|
376
|
-
end
|
377
|
-
|
378
|
-
it 'returns a LogDevice instance' do
|
379
|
-
logger.add_device(STDERR, 'warn')
|
380
|
-
expect(logger.devices_for(:warn).first).to be_a(Logger::LogDevice)
|
381
|
-
expect(logger.devices_for(:warn).first.dev).to be(STDERR)
|
382
|
-
end
|
383
|
-
|
384
|
-
it 'returns an empty array if there is not registered device for given severity' do
|
385
|
-
expect(logger.devices_for(Logger::WARN)).to eq([])
|
386
|
-
end
|
387
|
-
|
388
|
-
it 'returns default device if there is no device for given severity' do
|
389
|
-
logger.default_device = STDERR
|
390
|
-
logger.add_device(STDOUT, '>= warn')
|
391
|
-
expect(logger.devices_for(:debug).first.dev).to be(STDERR)
|
392
|
-
expect(logger.devices_for(:warn).first.dev).to be(STDOUT)
|
393
|
-
expect(logger.devices_for(:error).first.dev).to be(STDOUT)
|
394
|
-
end
|
395
|
-
|
396
|
-
it 'default is never used if a logger has been added to all severity' do
|
397
|
-
logger.default_device = STDERR
|
398
|
-
logger.add_device(STDOUT)
|
399
|
-
expect(logger.devices_for(:debug).first.dev).to be(STDOUT)
|
400
|
-
expect(logger.devices_for(:warn).first.dev).to be(STDOUT)
|
401
|
-
expect(logger.devices_for(:error).first.dev).to be(STDOUT)
|
402
|
-
end
|
403
|
-
|
404
|
-
end
|
405
|
-
|
406
|
-
describe '#initialize' do
|
407
|
-
|
408
|
-
it 'accepts no argument' do
|
409
|
-
expect {
|
410
|
-
MultipleDevicesLogger.new
|
411
|
-
}.not_to raise_error
|
412
|
-
end
|
413
|
-
|
414
|
-
it 'logdev is nil' do
|
415
|
-
expect(logger.instance_variable_get(:@logdev)).to be_nil
|
416
|
-
end
|
417
|
-
|
418
|
-
end
|
419
|
-
|
420
|
-
describe '#level' do
|
421
|
-
|
422
|
-
it 'is debug by default' do
|
423
|
-
expect(logger.level).to eq(Logger::DEBUG)
|
424
|
-
end
|
425
|
-
|
426
|
-
it 'is not changed when adding devices' do
|
427
|
-
expect {
|
428
|
-
logger.add_device(STDOUT, '> WARN')
|
429
|
-
}.not_to change { logger.level }
|
430
|
-
end
|
431
|
-
|
432
|
-
end
|
433
|
-
|
434
|
-
describe '#level=' do
|
435
|
-
|
436
|
-
it 'changes level' do
|
437
|
-
expect {
|
438
|
-
logger.level = Logger::INFO
|
439
|
-
}.to change { logger.level }.to(Logger::INFO)
|
440
|
-
end
|
441
|
-
|
442
|
-
it 'accepts symbols' do
|
443
|
-
expect {
|
444
|
-
logger.level = :warn
|
445
|
-
}.to change { logger.level }.to(Logger::WARN)
|
446
|
-
end
|
447
|
-
|
448
|
-
it 'accepts string' do
|
449
|
-
expect {
|
450
|
-
logger.level = 'Error'
|
451
|
-
}.to change { logger.level }.to(Logger::ERROR)
|
452
|
-
end
|
453
|
-
|
454
|
-
it 'raise an error if invalid' do
|
455
|
-
expect {
|
456
|
-
logger.level = :foo
|
457
|
-
}.to raise_error(ArgumentError, 'Invalid log severity: :foo')
|
458
|
-
end
|
459
|
-
|
460
|
-
end
|
461
|
-
|
462
|
-
describe '#log' do
|
463
|
-
|
464
|
-
it 'works like expected' do
|
465
|
-
logger.add_device(STDOUT, Logger::WARN)
|
466
|
-
expect(STDOUT).to receive(:write).with(/WARN -- : BAM!/)
|
467
|
-
logger.log(Logger::WARN, 'BAM!')
|
468
|
-
end
|
469
|
-
|
470
|
-
end
|
471
|
-
|
472
|
-
describe '#reopen' do
|
473
|
-
|
474
|
-
it 'raise an NotImplementedError' do
|
475
|
-
expect {
|
476
|
-
logger.reopen
|
477
|
-
}.to raise_error(NotImplementedError, 'MultipleDevicesLogger#reopen')
|
478
|
-
end
|
479
|
-
|
480
|
-
end
|
481
|
-
|
482
|
-
describe '#warn' do
|
483
|
-
|
484
|
-
it 'does not output anything if there is no device' do
|
485
|
-
logger.add_device(STDOUT, Logger::DEBUG)
|
486
|
-
expect(STDOUT).not_to receive(:write)
|
487
|
-
logger.warn('BAM!')
|
488
|
-
end
|
489
|
-
|
490
|
-
it 'output message to device if configured' do
|
491
|
-
logger.add_device(STDOUT, Logger::WARN)
|
492
|
-
expect(STDOUT).to receive(:write).with(/WARN -- : BAM!/)
|
493
|
-
logger.warn('BAM!')
|
494
|
-
end
|
495
|
-
|
496
|
-
end
|
497
|
-
|
498
|
-
describe '@logdev' do
|
499
|
-
|
500
|
-
let(:logdev) { logger.instance_variable_get(:@logdev) }
|
501
|
-
|
502
|
-
it 'is nil' do
|
503
|
-
expect(logdev).to be_nil
|
504
|
-
end
|
505
|
-
|
506
|
-
end
|
507
|
-
|
508
|
-
end
|