ougai 1.3.0 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0235a013e7e1d174d71adb866072ce73243cb8a8
4
- data.tar.gz: ffde73e617129cf7287abfd53cbd5f151e166816
3
+ metadata.gz: ebde39051085cb7a4b15a0d010903592a6e05bad
4
+ data.tar.gz: 47c033c11627e440dfc666577178593fb59666d0
5
5
  SHA512:
6
- metadata.gz: be64d5eb15dca49f85a323b2c3fac463d83a42dd3f5f0bca6d318ca27cd8646e74dd3e3d658d3248469ccf4e6320c39512a390a91ca92d8a46dde3ab1f7f4c3a
7
- data.tar.gz: a634e9fa73595c01748390bb6043e220c8f0b65cc052202320cf6fa31ea4b3be0984c623171afc46ea72e227d3f32bceb770b3baf07d8f0421e54067ac2326f8
6
+ metadata.gz: 50775ba920ffba4c4f01f2aef35c274c5c916ab9fa46d6265a878a43bcd5e492af09e552aae082d9efeec7296ce651a285d48f6acd8027c8412a50f8aec0d93c
7
+ data.tar.gz: 39a73244485976896f2987cee6a2c39311f50799669c3e7f9deda7b96267e18e47bc4d53e9f1b75fba047b05c45f217e1f11a2c07c97cafb7e617c8f0459f004
data/README.md CHANGED
@@ -236,6 +236,47 @@ Thread.new { logger.debug('on another thread') }
236
236
  {"name":"main","hostname":"mint","pid":13975,"level":20,"time":"2017-08-06T15:35:53.435+09:00","v":0,"msg":"on another thread","thread_id":"gqe0cb14g"}
237
237
  ```
238
238
 
239
+ ### Using broadcast, log output plural targets
240
+
241
+ `Ougai::Logger.broadcast` can be used to like `ActiveSupport::Logger.broadcast`.
242
+
243
+ #### An example
244
+
245
+ Original `logger` outputs STDOUT and `error_logger` outputs `./error.log`.
246
+ Every calling for `logger` is propagated to `error_logger`.
247
+
248
+ ```ruby
249
+ logger = Ougai::Logger.new(STDOUT)
250
+
251
+ error_logger = Ougai::Logger.new('./error.log')
252
+ logger.extend Ougai::Logger.broadcast(error_logger)
253
+
254
+ logger.level = Logger::INFO
255
+ logger.info('Hello!')
256
+
257
+ error_logger.level = Logger::ERROR
258
+ logger.error('Failed to do something.')
259
+
260
+ logger.level = Logger::WARN # error_logger level is also set WARN by propagation
261
+ logger.warn('Ignored something.')
262
+ ```
263
+
264
+ ##### STDOUT
265
+
266
+ ```json
267
+ {"name":"main","hostname":"mint","pid":24915,"level":30,"time":"2017-08-16T17:23:42.415+09:00","v":0,"msg":"Hello!"}
268
+ {"name":"main","hostname":"mint","pid":24915,"level":50,"time":"2017-08-16T17:23:42.416+09:00","v":0,"msg":"Failed to do something."}
269
+ {"name":"main","hostname":"mint","pid":24915,"level":40,"time":"2017-08-16T17:23:42.416+09:00","v":0,"msg":"Ignored something."}
270
+ ```
271
+
272
+ ##### error.log
273
+
274
+ ```json
275
+ {"name":"main","hostname":"mint","pid":24915,"level":50,"time":"2017-08-16T17:23:42.415+09:00","v":0,"msg":"Failed to do something."}
276
+ {"name":"main","hostname":"mint","pid":24915,"level":40,"time":"2017-08-16T17:23:42.416+09:00","v":0,"msg":"Ignored something."}
277
+ ```
278
+
279
+
239
280
  ## View log by node-bunyan
240
281
 
241
282
  Install [bunyan](https://github.com/trentm/node-bunyan) via NPM
@@ -22,6 +22,11 @@ module Ougai
22
22
  super(*args)
23
23
  end
24
24
  end
25
+
26
+ define_method(:level=) do |level|
27
+ logger.level = level
28
+ super(level)
29
+ end
25
30
  end
26
31
  end
27
32
 
@@ -4,33 +4,23 @@ module Ougai
4
4
  attr_writer :before_log
5
5
 
6
6
  def debug(message = nil, ex = nil, data = nil, &block)
7
- return true if level > Logger::DEBUG
8
- args = block ? yield : [message, ex, data]
9
- append(Logger::DEBUG, args)
7
+ log(Logger::DEBUG, message, ex, data, block)
10
8
  end
11
9
 
12
10
  def info(message = nil, ex = nil, data = nil, &block)
13
- return true if level > Logger::INFO
14
- args = block ? yield : [message, ex, data]
15
- append(Logger::INFO, args)
11
+ log(Logger::INFO, message, ex, data, block)
16
12
  end
17
13
 
18
14
  def warn(message = nil, ex = nil, data = nil, &block)
19
- return true if level > Logger::WARN
20
- args = block ? yield : [message, ex, data]
21
- append(Logger::WARN, args)
15
+ log(Logger::WARN, message, ex, data, block)
22
16
  end
23
17
 
24
18
  def error(message = nil, ex = nil, data = nil, &block)
25
- return true if level > Logger::ERROR
26
- args = block ? yield : [message, ex, data]
27
- append(Logger::ERROR, args)
19
+ log(Logger::ERROR, message, ex, data, block)
28
20
  end
29
21
 
30
22
  def fatal(message = nil, ex = nil, data = nil, &block)
31
- return true if level > Logger::FATAL
32
- args = block ? yield : [message, ex, data]
33
- append(Logger::FATAL, args)
23
+ log(Logger::FATAL, message, ex, data, block)
34
24
  end
35
25
 
36
26
  def unknown(message = nil, ex = nil, data = nil, &block)
@@ -61,5 +51,13 @@ module Ougai
61
51
  end
62
52
  end
63
53
  end
54
+
55
+ private
56
+
57
+ def log(severity, message, ex, data, block)
58
+ return true if level > severity
59
+ args = block ? block.call : [message, ex, data]
60
+ append(severity, args)
61
+ end
64
62
  end
65
63
  end
@@ -1,3 +1,3 @@
1
1
  module Ougai
2
- VERSION = "1.3.0"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -516,4 +516,102 @@ describe Ougai::Logger do
516
516
  end
517
517
  end
518
518
  end
519
+
520
+ describe '#broadcast' do
521
+ let(:log_msg) { 'broadcast test message' }
522
+
523
+ let(:another_io) { StringIO.new }
524
+ let(:another_logger) { described_class.new(another_io) }
525
+
526
+ let(:another_item) do
527
+ log_str = another_io.string
528
+ begin
529
+ JSON.parse(log_str, symbolize_names: true)
530
+ rescue Exception => e
531
+ nil
532
+ end
533
+ end
534
+
535
+ before do
536
+ logger.extend Ougai::Logger.broadcast(another_logger)
537
+ end
538
+
539
+ context 'another logger level is the same as original one' do
540
+ before do
541
+ logger.level = Logger::INFO # propagate serverity to another one
542
+ end
543
+
544
+ it 'does not output debug log on both loggers' do
545
+ logger.debug(log_msg, foo: 1)
546
+ expect(item).to be_nil
547
+ expect(another_item).to be_nil
548
+ end
549
+
550
+ it 'does not output debug log with block on both loggers' do
551
+ logger.debug { [log_msg, foo: 1] }
552
+ expect(item).to be_nil
553
+ expect(another_item).to be_nil
554
+ end
555
+
556
+ it 'outputs info log on both loggers' do
557
+ logger.info(log_msg, foo: 2)
558
+ expect(item).to be_log_message(log_msg, 30)
559
+ expect(item).to include_data(foo: 2)
560
+ expect(another_item).to be_log_message(log_msg, 30)
561
+ expect(another_item).to include_data(foo: 2)
562
+ end
563
+
564
+ it 'outputs info log with block on both loggers' do
565
+ logger.info(log_msg, foo: 2)
566
+ expect(item).to be_log_message(log_msg, 30)
567
+ expect(item).to include_data(foo: 2)
568
+ expect(another_item).to be_log_message(log_msg, 30)
569
+ expect(another_item).to include_data(foo: 2)
570
+ end
571
+
572
+ it 'outputs warning log on both loggers' do
573
+ logger.warn(log_msg)
574
+ expect(item).to be_log_message(log_msg, 40)
575
+ expect(another_item).to be_log_message(log_msg, 40)
576
+ end
577
+ end
578
+
579
+ context 'another logger level is lower than original one' do
580
+ before do
581
+ logger.level = Logger::INFO
582
+ another_logger.level = Logger::DEBUG
583
+ end
584
+
585
+ it 'outputs debug log on only another logger' do
586
+ logger.debug(log_msg)
587
+ expect(item).to be_nil
588
+ expect(another_item).to be_log_message(log_msg, 20)
589
+ end
590
+
591
+ it 'outputs info log on both loggers' do
592
+ logger.info(log_msg)
593
+ expect(item).to be_log_message(log_msg, 30)
594
+ expect(another_item).to be_log_message(log_msg, 30)
595
+ end
596
+ end
597
+
598
+ context 'another logger level is greater than original one' do
599
+ before do
600
+ logger.level = Logger::INFO
601
+ another_logger.level = Logger::WARN
602
+ end
603
+
604
+ it 'outputs info log on only original logger' do
605
+ logger.info(log_msg)
606
+ expect(item).to be_log_message(log_msg, 30)
607
+ expect(another_item).to be_nil
608
+ end
609
+
610
+ it 'outputs warning log on both loggers' do
611
+ logger.warn(log_msg)
612
+ expect(item).to be_log_message(log_msg, 40)
613
+ expect(another_item).to be_log_message(log_msg, 40)
614
+ end
615
+ end
616
+ end
519
617
  end
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.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toshimitsu Takahashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-06 00:00:00.000000000 Z
11
+ date: 2017-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -102,15 +102,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  version: '0'
103
103
  requirements: []
104
104
  rubyforge_project:
105
- rubygems_version: 2.6.11
105
+ rubygems_version: 2.5.1
106
106
  signing_key:
107
107
  specification_version: 4
108
108
  summary: JSON logger compatible with node-bunyan is capable of handling data easily.
109
109
  test_files:
110
+ - spec/child_logger_spec.rb
110
111
  - spec/formatters/base_spec.rb
111
112
  - spec/formatters/readable_spec.rb
112
- - spec/child_logger_spec.rb
113
- - spec/logging_spec.rb
114
113
  - spec/logger_spec.rb
114
+ - spec/logging_spec.rb
115
115
  - spec/ougai_spec.rb
116
116
  - spec/spec_helper.rb