ougai 1.7.1-java → 1.8.0-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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 02b6fb3d3c2a1bf4d395dcb2d1988230e6ec7d35
4
- data.tar.gz: 4b839d8ec5c1a3ff40522532c37da50adb90b67a
2
+ SHA256:
3
+ metadata.gz: 2fa59d7d501c2e7a7d5857069ffcc0f99e84b5d5d9a69b5a70897cc1bf229bb2
4
+ data.tar.gz: 68d2de0dd27eb38891b3b15630cde500a054a8e2f6314b7bd901e27053d74d92
5
5
  SHA512:
6
- metadata.gz: 5b5a2ad7ef4dcf1ce0778b66a788d0c9f21299d8188c0f9c8d6a4818c4b3c7d1d7e241c18aefba27d0c2b5aef3c5edf48ca6db84515c87fc701be2abd0a56fb8
7
- data.tar.gz: a1873ff2005aa43c434a5a3563c28b08729e4308faf172b38c1799ea72e3e5cd06ef9aa07745ef6bf702fe86b4112d4bbb8d9e0f7ebac892f8a39c680095e9a7
6
+ metadata.gz: 261fda680ffc9d729dae0b5d53f7dac57e2933863620d583e1ea54a59eb1a594dab0a1a54ff107ba08076a357319e9ea306d9e3a31969532812e4b13e4c84d12
7
+ data.tar.gz: 345a998ca3bb34b4769f2c1f41b55811448944e714df217c859978b254432be1869d29fcc5d3f9619b025c5d18522ed22262704d002d352ff5452559a453cd52
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ougai (1.7.1-java)
4
+ ougai (1.8.0-java)
5
5
  jrjackson (~> 0.4)
6
6
 
7
7
  GEM
@@ -9,37 +9,37 @@ GEM
9
9
  specs:
10
10
  awesome_print (1.8.0)
11
11
  diff-lcs (1.3)
12
- docile (1.3.1)
13
- jrjackson (0.4.6-java)
14
- json (2.1.0-java)
12
+ docile (1.3.2)
13
+ jrjackson (0.4.9-java)
14
+ json (2.2.0-java)
15
15
  rake (10.5.0)
16
16
  rspec (3.8.0)
17
17
  rspec-core (~> 3.8.0)
18
18
  rspec-expectations (~> 3.8.0)
19
19
  rspec-mocks (~> 3.8.0)
20
- rspec-core (3.8.0)
20
+ rspec-core (3.8.2)
21
21
  rspec-support (~> 3.8.0)
22
- rspec-expectations (3.8.2)
22
+ rspec-expectations (3.8.4)
23
23
  diff-lcs (>= 1.2.0, < 2.0)
24
24
  rspec-support (~> 3.8.0)
25
- rspec-mocks (3.8.0)
25
+ rspec-mocks (3.8.1)
26
26
  diff-lcs (>= 1.2.0, < 2.0)
27
27
  rspec-support (~> 3.8.0)
28
- rspec-support (3.8.0)
29
- simplecov (0.16.1)
28
+ rspec-support (3.8.2)
29
+ simplecov (0.17.0)
30
30
  docile (~> 1.1)
31
31
  json (>= 1.8, < 3)
32
32
  simplecov-html (~> 0.10.0)
33
33
  simplecov-html (0.10.2)
34
34
  timecop (0.9.1)
35
- yard (0.9.16)
35
+ yard (0.9.20)
36
36
 
37
37
  PLATFORMS
38
38
  java
39
39
 
40
40
  DEPENDENCIES
41
41
  awesome_print
42
- bundler (~> 1.11)
42
+ bundler (>= 1.11.0)
43
43
  ougai!
44
44
  rake (~> 10.0)
45
45
  rspec (~> 3.0)
@@ -48,4 +48,4 @@ DEPENDENCIES
48
48
  yard
49
49
 
50
50
  BUNDLED WITH
51
- 1.16.2
51
+ 2.0.2
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 Toshimitsu Takahashi
3
+ Copyright (c) 2016-2019 Toshimitsu Takahashi
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -169,9 +169,9 @@ logger.error do
169
169
  ['Failed to fetch info', ex, { id: 10 }]
170
170
  end
171
171
 
172
- loggger.fatal { ex }
172
+ logger.fatal { ex }
173
173
 
174
- loggger.fatal do
174
+ logger.fatal do
175
175
  ['Unexpected', ex]
176
176
  end
177
177
  ```
@@ -204,7 +204,7 @@ But if the field's type is *Array*, both with_field value and logging value are
204
204
  logger = Ougai::Logger.new(STDOUT)
205
205
  logger.with_fields = { app: 'yourapp', tags: ['service'], kind: 'main' }
206
206
 
207
- child_logger = logger.child({ tags:['user'], kind: 'logic' })
207
+ child_logger = logger.child({ tags: ['user'], kind: 'logic' })
208
208
  logger.info('Created child logger')
209
209
 
210
210
  child_logger.info('Created a user', name: 'Mike')
@@ -219,14 +219,25 @@ gc_logger.child({ mode: 'processed' }) do |gcc_logger|
219
219
 
220
220
  :some_return_value
221
221
  end
222
+
223
+ child_logger.sev_threshold = :error # alias of level
224
+ child_logger.info('This is not outputted')
225
+ gc_logger.info('This is not outputted')
226
+ child_logger.error('This is outputted')
227
+ gc_logger.error('This is outputted')
228
+
229
+ child_logger.level = :debug # does not work because the level is below parent one
230
+ child_logger.debug('This is not outputted')
222
231
  ```
223
232
 
224
233
  ```json
225
- {"name":"main","hostname":"mint2","pid":8342,"level":30,"time":"2017-08-01T22:07:20.400+09:00","v":0,"app":"yourapp","tags":["service"],"kind":"main","msg":"Created child logger"}
226
- {"name":"Mike","hostname":"mint2","pid":8342,"level":30,"time":"2017-08-01T22:07:20.400+09:00","v":0,"app":"yourapp","tags":["service","user"],"kind":"logic","msg":"Created a user"}
227
- {"name":"main","hostname":"mint2","pid":8342,"level":30,"time":"2017-08-01T22:07:20.400+09:00","v":0,"app":"yourapp","tags":["service","user"],"kind":"logic","msg":"Created grand child logger"}
228
- {"name":"main","hostname":"mint2","pid":8342,"level":20,"time":"2017-08-01T22:07:20.400+09:00","v":0,"app":"yourapp","tags":["service","user"],"kind":"detail","age":34,"weight":72,"msg":"something detail"}
229
- {"name":"main","hostname":"mint2","pid":8342,"level":20,"time":"2017-08-01T22:07:20.400+09:00","v":0,"app":"yourapp","tags":["service","user"],"kind":"detail","mode":"processed","msg":"Great-grandchild logger that will be cleaned up on block exit."}
234
+ {"name":"main","hostname":"mint","pid":8342,"level":30,"time":"2017-08-01T22:07:20.400+09:00","v":0,"app":"yourapp","tags":["service"],"kind":"main","msg":"Created child logger"}
235
+ {"name":"Mike","hostname":"mint","pid":8342,"level":30,"time":"2017-08-01T22:07:20.400+09:00","v":0,"app":"yourapp","tags":["service","user"],"kind":"logic","msg":"Created a user"}
236
+ {"name":"main","hostname":"mint","pid":8342,"level":30,"time":"2017-08-01T22:07:20.400+09:00","v":0,"app":"yourapp","tags":["service","user"],"kind":"logic","msg":"Created grand child logger"}
237
+ {"name":"main","hostname":"mint","pid":8342,"level":20,"time":"2017-08-01T22:07:20.400+09:00","v":0,"app":"yourapp","tags":["service","user"],"kind":"detail","age":34,"weight":72,"msg":"something detail"}
238
+ {"name":"main","hostname":"mint","pid":8342,"level":20,"time":"2017-08-01T22:07:20.400+09:00","v":0,"app":"yourapp","tags":["service","user"],"kind":"detail","mode":"processed","msg":"Great-grandchild logger that will be cleaned up on block exit."}
239
+ {"name":"main","hostname":"mint","pid":4894,"level":50,"time":"2017-08-01T22:07:20.401+09:00","v":0,"app":"yourapp","tags":["service","user"],"kind":"logic","msg":"This is outputed"}
240
+ {"name":"main","hostname":"mint","pid":4894,"level":50,"time":"2017-08-01T22:07:20.401+09:00","v":0,"app":"yourapp","tags":["service","user"],"kind":"detail","msg":"This is outputed"}
230
241
  ```
231
242
 
232
243
  If any field exists in both parent log and child log, the parent value is overridden or merged by child value.
@@ -264,14 +275,14 @@ Every calling for `logger` is propagated to `error_logger`.
264
275
 
265
276
  ```ruby
266
277
  logger = Ougai::Logger.new(STDOUT)
278
+ logger.level = Logger::INFO
267
279
 
268
280
  error_logger = Ougai::Logger.new('./error.log')
281
+ error_logger.level = Logger::ERROR
269
282
  logger.extend Ougai::Logger.broadcast(error_logger)
270
283
 
271
- logger.level = Logger::INFO
272
284
  logger.info('Hello!')
273
285
 
274
- error_logger.level = Logger::ERROR
275
286
  logger.error('Failed to do something.')
276
287
 
277
288
  logger.level = Logger::WARN # error_logger level is also set WARN by propagation
@@ -8,42 +8,74 @@ module Ougai
8
8
  # @private
9
9
  def initialize(parent, fields)
10
10
  @before_log = nil
11
+ @level = nil
11
12
  @parent = parent
12
13
  @with_fields = fields
13
14
  end
14
15
 
16
+ # Creates a child logger and returns it.
17
+ # @param fields [Hash] The fields appending to all logs
18
+ # @return [ChildLogger] A created child logger
19
+ def child(fields = {})
20
+ ch = self.class.new(self, fields)
21
+
22
+ if !block_given?
23
+ ch
24
+ else
25
+ yield ch
26
+ end
27
+ end
28
+
29
+ # Set logging severity threshold.
30
+ # Note that the log level below parent one does not work.
31
+ # @param severity [Integer|String|Symbol] The Severity of the log message.
32
+ def level=(severity)
33
+ if severity.is_a?(Integer)
34
+ @level = severity
35
+ elsif severity.is_a?(String)
36
+ @level = from_label(severity.upcase)
37
+ elsif severity.is_a?(Symbol)
38
+ @level = from_label(severity.to_s.upcase)
39
+ else
40
+ @level = nil
41
+ end
42
+ end
43
+
15
44
  def level
16
- @parent.level
45
+ @level || @parent.level
17
46
  end
18
47
 
48
+ alias sev_threshold= level=
49
+ alias sev_threshold level
50
+
19
51
  # Whether the current severity level allows for logging DEBUG.
20
52
  # @return [Boolean] true if allows
21
53
  def debug?
22
- @parent.debug?
54
+ level <= DEBUG
23
55
  end
24
56
 
25
57
  # Whether the current severity level allows for logging INFO.
26
58
  # @return [Boolean] true if allows
27
59
  def info?
28
- @parent.info?
60
+ level <= INFO
29
61
  end
30
62
 
31
63
  # Whether the current severity level allows for logging WARN.
32
64
  # @return [Boolean] true if allows
33
65
  def warn?
34
- @parent.warn?
66
+ level <= WARN
35
67
  end
36
68
 
37
69
  # Whether the current severity level allows for logging ERROR.
38
70
  # @return [Boolean] true if allows
39
71
  def error?
40
- @parent.error?
72
+ level <= ERROR
41
73
  end
42
74
 
43
75
  # Whether the current severity level allows for logging FATAL.
44
76
  # @return [Boolean] true if allows
45
77
  def fatal?
46
- @parent.fatal?
78
+ level <= FATAL
47
79
  end
48
80
 
49
81
  # @private
@@ -20,6 +20,20 @@ module Ougai
20
20
  @formatter = create_formatter
21
21
  end
22
22
 
23
+ class << self
24
+ def child_class
25
+ @child_class ||= ChildLogger
26
+ end
27
+
28
+ def child_class=(klass)
29
+ @child_class = klass
30
+ end
31
+
32
+ def inherited(subclass)
33
+ subclass.child_class = Class.new(ChildLogger)
34
+ end
35
+ end
36
+
23
37
  # Broadcasts the same logs to the another logger
24
38
  # @param logger [Logger] The logger receiving broadcast logs.
25
39
  def self.broadcast(logger)
@@ -59,6 +73,19 @@ module Ougai
59
73
  super
60
74
  end
61
75
 
76
+ # Creates a child logger and returns it.
77
+ # @param fields [Hash] The fields appending to all logs
78
+ # @return [ChildLogger] A created child logger
79
+ def child(fields = {})
80
+ ch = self.class.child_class.new(self, fields)
81
+
82
+ if !block_given?
83
+ ch
84
+ else
85
+ yield ch
86
+ end
87
+ end
88
+
62
89
  # @private
63
90
  def chain(severity, args, fields, hooks)
64
91
  hooks.push(@before_log) if @before_log
@@ -10,11 +10,17 @@ module Ougai
10
10
  include ::Logger::Severity
11
11
  TRACE = -1
12
12
 
13
- SEV_LABEL = %w(TRACE DEBUG INFO WARN ERROR FATAL ANY)
13
+ SEV_LABEL = %w(TRACE DEBUG INFO WARN ERROR FATAL UNKNOWN)
14
14
 
15
15
  def to_label(severity)
16
16
  SEV_LABEL[severity + 1] || 'ANY'
17
17
  end
18
+
19
+ def from_label(severity)
20
+ SEV_LABEL.index(severity) - 1
21
+ rescue
22
+ raise ArgumentError, "invalid log level: #{severity}"
23
+ end
18
24
  end
19
25
  include Severity
20
26
 
@@ -78,19 +84,6 @@ module Ougai
78
84
  level <= TRACE
79
85
  end
80
86
 
81
- # Creates a child logger and returns it.
82
- # @param fields [Hash] The fields appending to all logs
83
- # @return [ChildLogger] A created child logger
84
- def child(fields = {})
85
- ch = ChildLogger.new(self, fields)
86
-
87
- if !block_given?
88
- ch
89
- else
90
- yield ch
91
- end
92
- end
93
-
94
87
  # @private
95
88
  def chain(_severity, _args, _fields, _hooks)
96
89
  raise NotImplementedError
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ougai
4
- VERSION = '1.7.1'
4
+ VERSION = '1.8.0'
5
5
  end
@@ -29,13 +29,11 @@ describe Ougai::ChildLogger do
29
29
  items[0]
30
30
  }
31
31
 
32
- describe '#level propagated from parent one' do
32
+ describe '#level' do
33
33
  let(:logger) { parent_logger.child }
34
+ let(:log_msg) { 'log message' }
34
35
 
35
- context 'TRACE' do
36
- let(:log_msg) { 'log message' }
37
- before { parent_logger.level = Ougai::Logger::TRACE }
38
-
36
+ shared_examples 'trace logging' do
39
37
  it 'outputs trace message' do
40
38
  logger.trace(log_msg)
41
39
  expect(item).to be_log_message(log_msg, 10)
@@ -56,10 +54,7 @@ describe Ougai::ChildLogger do
56
54
  end
57
55
  end
58
56
 
59
- context 'DEBUG' do
60
- let(:log_msg) { 'log message' }
61
- before { parent_logger.level = Logger::DEBUG }
62
-
57
+ shared_examples 'debug logging' do
63
58
  it 'does not output trace message' do
64
59
  logger.trace(log_msg)
65
60
  expect(item).to be_nil
@@ -85,10 +80,7 @@ describe Ougai::ChildLogger do
85
80
  end
86
81
  end
87
82
 
88
- context 'INFO' do
89
- let(:log_msg) { 'log message' }
90
- before { parent_logger.level = Logger::INFO }
91
-
83
+ shared_examples 'info logging' do
92
84
  it 'does not output debug message' do
93
85
  logger.debug(log_msg)
94
86
  expect(item).to be_nil
@@ -114,10 +106,7 @@ describe Ougai::ChildLogger do
114
106
  end
115
107
  end
116
108
 
117
- context 'WARN' do
118
- let(:log_msg) { 'log message' }
119
- before { parent_logger.level = Logger::WARN }
120
-
109
+ shared_examples 'warn logging' do
121
110
  it 'does not output info message' do
122
111
  logger.info(log_msg)
123
112
  expect(item).to be_nil
@@ -143,10 +132,7 @@ describe Ougai::ChildLogger do
143
132
  end
144
133
  end
145
134
 
146
- context 'ERROR' do
147
- let(:log_msg) { 'log message' }
148
- before { parent_logger.level = Logger::ERROR }
149
-
135
+ shared_examples 'error logging' do
150
136
  it 'does not output warning message' do
151
137
  logger.warn(log_msg)
152
138
  expect(item).to be_nil
@@ -172,10 +158,7 @@ describe Ougai::ChildLogger do
172
158
  end
173
159
  end
174
160
 
175
- context 'FATAL' do
176
- let(:log_msg) { 'log message' }
177
- before { parent_logger.level = Logger::FATAL }
178
-
161
+ shared_examples 'fatal logging' do
179
162
  it 'does not output error message' do
180
163
  logger.error(log_msg)
181
164
  expect(item).to be_nil
@@ -201,10 +184,7 @@ describe Ougai::ChildLogger do
201
184
  end
202
185
  end
203
186
 
204
- context 'UNKNOWN' do
205
- let(:log_msg) { 'log message' }
206
- before { parent_logger.level = Logger::UNKNOWN }
207
-
187
+ shared_examples 'unknown logging' do
208
188
  it 'does not output fatal message' do
209
189
  logger.fatal(log_msg)
210
190
  expect(item).to be_nil
@@ -224,6 +204,162 @@ describe Ougai::ChildLogger do
224
204
  expect(logger.fatal?).to be_falsey
225
205
  end
226
206
  end
207
+
208
+ context 'TRACE the same level as parent' do
209
+ it_behaves_like 'trace logging' do
210
+ before do
211
+ parent_logger.level = Ougai::Logger::TRACE
212
+ logger.level = Ougai::Logger::TRACE
213
+ end
214
+ end
215
+ end
216
+
217
+ context 'DEBUG above parent level' do
218
+ it_behaves_like 'debug logging' do
219
+ before do
220
+ parent_logger.level = Ougai::Logger::TRACE
221
+ logger.level = Ougai::Logger::DEBUG
222
+ end
223
+ end
224
+ end
225
+
226
+ context 'INFO above parent level' do
227
+ it_behaves_like 'info logging' do
228
+ before do
229
+ parent_logger.level = Ougai::Logger::DEBUG
230
+ logger.level = Ougai::Logger::INFO
231
+ end
232
+ end
233
+ end
234
+
235
+ context 'WARN above parent level' do
236
+ it_behaves_like 'warn logging' do
237
+ before do
238
+ parent_logger.level = Ougai::Logger::INFO
239
+ logger.level = Ougai::Logger::WARN
240
+ end
241
+ end
242
+ end
243
+
244
+ context 'ERROR above parent level' do
245
+ it_behaves_like 'error logging' do
246
+ before do
247
+ parent_logger.level = Ougai::Logger::WARN
248
+ logger.level = Ougai::Logger::ERROR
249
+ end
250
+ end
251
+ end
252
+
253
+ context 'FATAL above parent level' do
254
+ it_behaves_like 'fatal logging' do
255
+ before do
256
+ parent_logger.level = Ougai::Logger::ERROR
257
+ logger.level = Ougai::Logger::FATAL
258
+ end
259
+ end
260
+ end
261
+
262
+ context 'UNKNOWN the same level as parent' do
263
+ it_behaves_like 'unknown logging' do
264
+ before do
265
+ parent_logger.level = Ougai::Logger::UNKNOWN
266
+ logger.level = Ougai::Logger::UNKNOWN
267
+ end
268
+ end
269
+ end
270
+
271
+ context 'propagated from parent TRACE' do
272
+ it_behaves_like 'trace logging' do
273
+ before do
274
+ parent_logger.level = Ougai::Logger::TRACE
275
+ end
276
+ end
277
+ end
278
+
279
+ context 'propagated from parent DEBUG' do
280
+ it_behaves_like 'debug logging' do
281
+ before do
282
+ parent_logger.level = Ougai::Logger::DEBUG
283
+ end
284
+ end
285
+ end
286
+
287
+ context 'propagated from parent INFO' do
288
+ it_behaves_like 'info logging' do
289
+ before do
290
+ parent_logger.level = Ougai::Logger::INFO
291
+ end
292
+ end
293
+ end
294
+
295
+ context 'propagated from parent WARN' do
296
+ it_behaves_like 'warn logging' do
297
+ before do
298
+ parent_logger.level = Ougai::Logger::WARN
299
+ end
300
+ end
301
+ end
302
+
303
+ context 'propagated from parent ERROR' do
304
+ it_behaves_like 'error logging' do
305
+ before do
306
+ parent_logger.level = Ougai::Logger::ERROR
307
+ end
308
+ end
309
+ end
310
+
311
+ context 'propagated from parent FATAL' do
312
+ it_behaves_like 'fatal logging' do
313
+ before do
314
+ parent_logger.level = Ougai::Logger::FATAL
315
+ end
316
+ end
317
+ end
318
+
319
+ context 'propagated from parent UNKNOWN' do
320
+ it_behaves_like 'unknown logging' do
321
+ before do
322
+ parent_logger.level = Ougai::Logger::UNKNOWN
323
+ end
324
+ end
325
+ end
326
+
327
+ context 'set a level once, set nil' do
328
+ before do
329
+ parent_logger.level = Ougai::Logger::WARN
330
+ logger.level = Ougai::Logger::INFO
331
+ end
332
+
333
+ it 'propagates from parent level' do
334
+ expect(logger.level).to eq Ougai::Logger::INFO
335
+ logger.level = nil
336
+ expect(logger.level).to eq Ougai::Logger::WARN
337
+ end
338
+ end
339
+
340
+ context 'set wrong name level' do
341
+ it 'throws ArgumentErrror' do
342
+ expect { logger.level = :wrong_level }.to raise_error(ArgumentError)
343
+ end
344
+ end
345
+ end
346
+
347
+ describe '#sev_threshold' do
348
+ let(:logger) { parent_logger.child }
349
+
350
+ it 'is the alias of level' do
351
+ logger.sev_threshold = Ougai::Logger::INFO
352
+ expect(logger.sev_threshold).to eq Ougai::Logger::INFO
353
+ expect(logger.level).to eq Ougai::Logger::INFO
354
+
355
+ logger.level = :trace
356
+ expect(logger.sev_threshold).to eq Ougai::Logger::TRACE
357
+ expect(logger.level).to eq Ougai::Logger::TRACE
358
+
359
+ logger.sev_threshold = 'unknown'
360
+ expect(logger.sev_threshold).to eq Ougai::Logger::UNKNOWN
361
+ expect(logger.level).to eq Ougai::Logger::UNKNOWN
362
+ end
227
363
  end
228
364
 
229
365
  describe '#chain' do
@@ -436,4 +572,37 @@ describe Ougai::ChildLogger do
436
572
  end
437
573
  end
438
574
  end
575
+
576
+ describe '#child' do
577
+ let!(:root) { double('root logger') }
578
+
579
+ context 'when the class is original' do
580
+ subject!(:org_instance) { described_class.new(root, {}) }
581
+
582
+ it 'returns an instance of the same class' do
583
+ expect(org_instance.child).to be_an_instance_of(described_class)
584
+ end
585
+ end
586
+
587
+ context 'when the class is sub-class' do
588
+ subject!(:sc_instance) { Class.new(described_class).new(root, {}) }
589
+
590
+ it 'returns an instance of the child_class' do
591
+ expect(sc_instance.child).to be_an_instance_of(sc_instance.class)
592
+ end
593
+ end
594
+
595
+ context 'block is given' do
596
+ let!(:fields) { double('fields') }
597
+
598
+ subject { described_class.new(root, {}) }
599
+
600
+ it 'yields child logger' do
601
+ subject.child(fields) do |cl|
602
+ expect(cl.instance_variable_get(:@parent)).to eq(subject)
603
+ expect(cl.instance_variable_get(:@with_fields)).to eq(fields)
604
+ end
605
+ end
606
+ end
607
+ end
439
608
  end
@@ -685,4 +685,55 @@ describe Ougai::Logger do
685
685
  expect(another_io.closed?).to be_truthy
686
686
  end
687
687
  end
688
+
689
+ describe '.child_class' do
690
+ let!(:org_logger_cls) { described_class }
691
+ let!(:sc_logger_cls) { Class.new(described_class) }
692
+
693
+ context 'when Logger class is original' do
694
+ subject { described_class.child_class }
695
+
696
+ it { is_expected.to eq(Ougai::ChildLogger) }
697
+ end
698
+
699
+ context 'when Logger class is sub-class' do
700
+ subject { Class.new(described_class).child_class }
701
+
702
+ it 'returns sub-class of Ougai::ChildLogger' do
703
+ expect(subject).not_to eq(Ougai::ChildLogger)
704
+ expect(subject.superclass).to eq(Ougai::ChildLogger)
705
+ end
706
+ end
707
+ end
708
+
709
+ describe '#child' do
710
+ context 'when Logger class is original' do
711
+ subject!(:org_instance) { described_class.new(STDOUT) }
712
+
713
+ it 'returns ChildLogger instance' do
714
+ expect(org_instance.child).to be_an_instance_of(Ougai::ChildLogger)
715
+ end
716
+ end
717
+
718
+ context 'when Logger class is sub-class' do
719
+ subject!(:sc_instance) { Class.new(described_class).new(STDOUT) }
720
+
721
+ it 'returns an instance of the child_class' do
722
+ expect(sc_instance.child).to be_an_instance_of(sc_instance.class.child_class)
723
+ end
724
+ end
725
+
726
+ context 'block is given' do
727
+ let!(:fields) { double('fields') }
728
+
729
+ subject { described_class.new(STDOUT) }
730
+
731
+ it 'yields child logger' do
732
+ subject.child(fields) do |cl|
733
+ expect(cl.instance_variable_get(:@parent)).to eq(subject)
734
+ expect(cl.instance_variable_get(:@with_fields)).to eq(fields)
735
+ end
736
+ end
737
+ end
738
+ end
688
739
  end
@@ -19,27 +19,6 @@ describe Ougai::Logging do
19
19
  end
20
20
  end
21
21
 
22
- describe '#child' do
23
- let!(:fields) { double('fields') }
24
- let!(:child_logger) { double('child logger') }
25
-
26
- context 'block is not given' do
27
- it 'returns child logger' do
28
- expect(Ougai::ChildLogger).to receive(:new).with(subject, fields).and_return(child_logger)
29
- expect(subject.child(fields)).to eq(child_logger)
30
- end
31
- end
32
-
33
- context 'block is given' do
34
- it 'passes child logger' do
35
- expect(Ougai::ChildLogger).to receive(:new).with(subject, fields).and_return(child_logger)
36
- subject.child(fields) do |cl|
37
- expect(cl).to eq(child_logger)
38
- end
39
- end
40
- end
41
- end
42
-
43
22
  describe '#chain' do
44
23
  it 'is not implemented' do
45
24
  expect{ subject.chain(:arg1, :arg2, :arg3, :arg4) }.to raise_error(NotImplementedError)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ougai
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.8.0
5
5
  platform: java
6
6
  authors:
7
7
  - Toshimitsu Takahashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-30 00:00:00.000000000 Z
11
+ date: 2019-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -27,17 +27,17 @@ dependencies:
27
27
  - !ruby/object:Gem::Dependency
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - "~>"
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: '1.11'
32
+ version: 1.11.0
33
33
  name: bundler
34
34
  prerelease: false
35
35
  type: :development
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.11'
40
+ version: 1.11.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
122
  version: '0'
123
123
  requirements: []
124
124
  rubyforge_project:
125
- rubygems_version: 2.6.14.1
125
+ rubygems_version: 2.7.9
126
126
  signing_key:
127
127
  specification_version: 4
128
128
  summary: JSON logger compatible with node-bunyan or pino is capable of handling structured