ougai 1.8.1 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fdfdff5fa693d4f9cc99ebcf23f98d469efd554bc305ef235808a08d614492f5
4
- data.tar.gz: a62f7b67bb08ce159c18ce11055556d9363ab828d6d4c18c033c9a77e3275158
3
+ metadata.gz: 4b9254ac3650ca12026fbd3d3c6b474a8de478fb81ea82f19fecdff6b62c8b17
4
+ data.tar.gz: 95c71a88355673d0821596503057ad46761c3b508ab7a0b72b806462f8a3af7f
5
5
  SHA512:
6
- metadata.gz: 82e5cb16d19270f57b2b398419a5f75c0feb459fa93925870662e7763722d718f0b2c8528f42c8b7ce97570310b55185235fa62e3a04a373c410484f76e5fd60
7
- data.tar.gz: 00ba0a0e24b2dda62a19e31774c24bd6178f89f5edb1856528ed5411b2f07a03a8e0eca888eadb3c4e5ac32dbdfcf0fc5afdb03961311534f1721de9b7a538f2
6
+ metadata.gz: 9c7cdf6d3ad6cfbaae66438cc40971a5cbd978ad9585c2ed4538cea3530184f53a3e0f2a87c22cfcfc581ecbb596eb7b7d2468edc26e7c1b05d27832d856bbcf
7
+ data.tar.gz: bed8c16d8e851d7b64d52b86084c13f333a0cee873ab4c1bd8670083c700597a587cb6edf39cead61711af747d30b0723d6bf63ac6eadd1c4de0fb7611d8f16c
data/Gemfile CHANGED
@@ -4,8 +4,8 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  group :test do
7
- gem 'awesome_print'
8
- gem 'simplecov', require: false
7
+ gem 'amazing_print'
8
+ gem 'simplecov', '< 0.18', require: false
9
9
  gem 'timecop'
10
10
  gem 'yard'
11
11
  end
@@ -1,53 +1,53 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ougai (1.8.1)
5
- oj (~> 3.4)
4
+ ougai (1.9.0)
5
+ oj (~> 3.10)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- awesome_print (1.8.0)
10
+ amazing_print (1.0.0)
11
11
  diff-lcs (1.3)
12
12
  docile (1.3.2)
13
- json (2.2.0)
14
- json (2.2.0-java)
15
- oj (3.9.0)
16
- rake (10.5.0)
17
- rspec (3.8.0)
18
- rspec-core (~> 3.8.0)
19
- rspec-expectations (~> 3.8.0)
20
- rspec-mocks (~> 3.8.0)
21
- rspec-core (3.8.2)
22
- rspec-support (~> 3.8.0)
23
- rspec-expectations (3.8.4)
13
+ json (2.3.0)
14
+ json (2.3.0-java)
15
+ oj (3.10.6)
16
+ rake (13.0.1)
17
+ rspec (3.9.0)
18
+ rspec-core (~> 3.9.0)
19
+ rspec-expectations (~> 3.9.0)
20
+ rspec-mocks (~> 3.9.0)
21
+ rspec-core (3.9.1)
22
+ rspec-support (~> 3.9.1)
23
+ rspec-expectations (3.9.0)
24
24
  diff-lcs (>= 1.2.0, < 2.0)
25
- rspec-support (~> 3.8.0)
26
- rspec-mocks (3.8.1)
25
+ rspec-support (~> 3.9.0)
26
+ rspec-mocks (3.9.1)
27
27
  diff-lcs (>= 1.2.0, < 2.0)
28
- rspec-support (~> 3.8.0)
29
- rspec-support (3.8.2)
30
- simplecov (0.17.0)
28
+ rspec-support (~> 3.9.0)
29
+ rspec-support (3.9.2)
30
+ simplecov (0.17.1)
31
31
  docile (~> 1.1)
32
32
  json (>= 1.8, < 3)
33
33
  simplecov-html (~> 0.10.0)
34
34
  simplecov-html (0.10.2)
35
35
  timecop (0.9.1)
36
- yard (0.9.20)
36
+ yard (0.9.24)
37
37
 
38
38
  PLATFORMS
39
39
  java
40
40
  ruby
41
41
 
42
42
  DEPENDENCIES
43
- awesome_print
44
- bundler (>= 1.11.0)
43
+ amazing_print
44
+ bundler (>= 2.1.4)
45
45
  ougai!
46
- rake (~> 10.0)
47
- rspec (~> 3.0)
48
- simplecov
46
+ rake (>= 13.0.1)
47
+ rspec (>= 3.9.0)
48
+ simplecov (< 0.18)
49
49
  timecop
50
50
  yard
51
51
 
52
52
  BUNDLED WITH
53
- 2.0.2
53
+ 2.1.4
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016-2019 Toshimitsu Takahashi
3
+ Copyright (c) 2016-2020 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
@@ -2,14 +2,14 @@ Ougai
2
2
  =====
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/ougai.svg)](https://badge.fury.io/rb/ougai)
5
- [![document](https://img.shields.io/badge/document-1.8.1-green.svg)](http://www.rubydoc.info/gems/ougai/)
5
+ [![document](https://img.shields.io/badge/document-1.9.0-green.svg)](http://www.rubydoc.info/gems/ougai/)
6
6
  [![Build Status](https://travis-ci.org/tilfin/ougai.svg?branch=master)](https://travis-ci.org/tilfin/ougai)
7
7
  [![Code Climate](https://codeclimate.com/github/tilfin/ougai/badges/gpa.svg)](https://codeclimate.com/github/tilfin/ougai)
8
8
  [![Test Coverage](https://codeclimate.com/github/tilfin/ougai/badges/coverage.svg)](https://codeclimate.com/github/tilfin/ougai/coverage)
9
9
 
10
10
  A structured logging system is capable of handling a message, structured data or an exception easily.
11
11
  It has JSON formatters compatible with [Bunyan](https://github.com/trentm/node-bunyan) or [pino](https://github.com/pinojs/pino) for Node.js and
12
- human readable formatter with [Awesome Print](https://github.com/awesome-print/awesome_print) for console.
12
+ human readable formatter with [Amazing Print](https://github.com/amazing-print/amazing_print) for console.
13
13
 
14
14
  ## Installation
15
15
 
@@ -335,10 +335,10 @@ If you use *Ougai::Formatters::Pino*, you can use command [pino](https://github.
335
335
 
336
336
  ## Use human Readable formatter for console
337
337
 
338
- Add awesome_print to Gemfile and `bundle`
338
+ Add amazing_print to Gemfile and `bundle`
339
339
 
340
340
  ```ruby
341
- gem 'awesome_print'
341
+ gem 'amazing_print'
342
342
  ```
343
343
 
344
344
  Set *Ougai::Formatters::Readable* instance to `formatter` accessor
@@ -4,7 +4,7 @@ require 'ougai/formatters/base'
4
4
 
5
5
  module Ougai
6
6
  module Formatters
7
- # A human readble formatter with awesome_print
7
+ # A human readble formatter with amazing_print
8
8
  # @attr [Boolean] plain Whether log should be plain not colorized.
9
9
  # @attr [Array<String, Symbol>] excluded_fields The fields excluded from all logs
10
10
  class Readable < Base
@@ -28,7 +28,8 @@ module Ougai
28
28
  load_dependent
29
29
  end
30
30
 
31
- def _call(severity, time, progname, data)
31
+ def _call(severity, time, progname, _data)
32
+ data = _data.dup
32
33
  msg = data.delete(:msg)
33
34
  level = @plain ? severity : colored_level(severity)
34
35
  dt = format_datetime(time)
@@ -86,9 +87,9 @@ module Ougai
86
87
  end
87
88
 
88
89
  def load_dependent
89
- require 'awesome_print'
90
+ require 'amazing_print'
90
91
  rescue LoadError
91
- puts 'You must install the awesome_print gem to use this output.'
92
+ puts 'You must install the amazing_print gem to use this output.'
92
93
  raise
93
94
  end
94
95
  end
@@ -7,12 +7,13 @@ module Ougai
7
7
  # @attr [Hash] with_fields The fields appending to all logs.
8
8
  # @attr [Proc] before_log Hook before logging.
9
9
  class Logger < ::Logger
10
+ alias_method :super_add, :add
10
11
  include Logging
11
12
 
12
13
  attr_accessor :default_message, :exc_key
13
14
 
14
- def initialize(*args)
15
- super(*args)
15
+ def initialize(*, **)
16
+ super
16
17
  @before_log = nil
17
18
  @default_message = 'No message'
18
19
  @exc_key = :err
@@ -38,13 +39,9 @@ module Ougai
38
39
  # @param logger [Logger] The logger receiving broadcast logs.
39
40
  def self.broadcast(logger)
40
41
  Module.new do |mdl|
41
- Logger::Severity.constants.each do |severity|
42
- method_name = severity.downcase.to_sym
43
-
44
- mdl.send(:define_method, method_name) do |*args|
45
- logger.send(method_name, *args)
46
- super(*args)
47
- end
42
+ define_method(:add) do |*args, &block|
43
+ logger.add(*args, &block)
44
+ super(*args, &block)
48
45
  end
49
46
 
50
47
  define_method(:level=) do |level|
@@ -115,7 +112,7 @@ module Ougai
115
112
  hooks.each do |hook|
116
113
  return false if hook.call(data) == false
117
114
  end
118
- add(severity, data)
115
+ super_add(severity, data)
119
116
  end
120
117
 
121
118
  def to_item(args)
@@ -28,7 +28,7 @@ module Ougai
28
28
  # @return [Boolean] true
29
29
  # @see Logging#debug
30
30
  def trace(message = nil, ex = nil, data = nil, &block)
31
- log(TRACE, message, ex, data, block)
31
+ add(TRACE, message, ex, data, &block)
32
32
  end
33
33
 
34
34
  # Log any one or more of a message, an exception and structured data as DEBUG.
@@ -39,43 +39,42 @@ module Ougai
39
39
  # @yieldreturn [String|Exception|Object|Array] Any one or more of former parameters
40
40
  # @return [Boolean] true
41
41
  def debug(message = nil, ex = nil, data = nil, &block)
42
- log(DEBUG, message, ex, data, block)
42
+ add(DEBUG, message, ex, data, &block)
43
43
  end
44
44
 
45
45
  # Log any one or more of a message, an exception and structured data as INFO.
46
46
  # @return [Boolean] true
47
47
  # @see Logging#debug
48
48
  def info(message = nil, ex = nil, data = nil, &block)
49
- log(INFO, message, ex, data, block)
49
+ add(INFO, message, ex, data, &block)
50
50
  end
51
51
 
52
52
  # Log any one or more of a message, an exception and structured data as WARN.
53
53
  # @return [Boolean] true
54
54
  # @see Logging#debug
55
55
  def warn(message = nil, ex = nil, data = nil, &block)
56
- log(WARN, message, ex, data, block)
56
+ add(WARN, message, ex, data, &block)
57
57
  end
58
58
 
59
59
  # Log any one or more of a message, an exception and structured data as ERROR.
60
60
  # @return [Boolean] true
61
61
  # @see Logging#debug
62
62
  def error(message = nil, ex = nil, data = nil, &block)
63
- log(ERROR, message, ex, data, block)
63
+ add(ERROR, message, ex, data, &block)
64
64
  end
65
65
 
66
66
  # Log any one or more of a message, an exception and structured data as FATAL.
67
67
  # @return [Boolean] true
68
68
  # @see Logging#debug
69
69
  def fatal(message = nil, ex = nil, data = nil, &block)
70
- log(FATAL, message, ex, data, block)
70
+ add(FATAL, message, ex, data, &block)
71
71
  end
72
72
 
73
73
  # Log any one or more of a message, an exception and structured data as UNKNOWN.
74
74
  # @return [Boolean] true
75
75
  # @see Logging#debug
76
76
  def unknown(message = nil, ex = nil, data = nil, &block)
77
- args = block ? yield : [message, ex, data]
78
- append(UNKNOWN, args)
77
+ add(UNKNOWN, message, ex, data, &block)
79
78
  end
80
79
 
81
80
  # Whether the current severity level allows for logging TRACE.
@@ -84,6 +83,22 @@ module Ougai
84
83
  level <= TRACE
85
84
  end
86
85
 
86
+ # Log any one or more of a message, an exception and structured data as specified log level.
87
+ # If the block is given for delay evaluation, it returns them as an array or the one of them as a value.
88
+ # @param severity [Integer] The log level.
89
+ # @param message [String] The message to log. Use default_message if not specified.
90
+ # @param ex [Exception] The exception or the error
91
+ # @param data [Object] Any structured data
92
+ # @yieldreturn [String|Exception|Object|Array] Any one or more of former parameters
93
+ # @return [Boolean] true
94
+ def add(severity, *args)
95
+ severity ||= UNKNOWN
96
+ return true if level > severity
97
+ append(severity, block_given? ? yield : args)
98
+ end
99
+
100
+ alias log add
101
+
87
102
  # @private
88
103
  def chain(_severity, _args, _fields, _hooks)
89
104
  raise NotImplementedError
@@ -106,13 +121,5 @@ module Ougai
106
121
  end
107
122
  end
108
123
  end
109
-
110
- private
111
-
112
- def log(severity, message, ex, data, block)
113
- return true if level > severity
114
- args = block ? block.call : [message, ex, data]
115
- append(severity, args)
116
- end
117
124
  end
118
125
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ougai
4
- VERSION = '1.8.1'
4
+ VERSION = '1.9.0'
5
5
  end
@@ -349,6 +349,14 @@ describe Ougai::Logger do
349
349
  it_behaves_like 'log'
350
350
  end
351
351
 
352
+ describe '#unknown' do
353
+ let(:log_level) { 70 }
354
+ let(:log_msg) { 'unknown message' }
355
+ let(:method) { 'unknown' }
356
+
357
+ it_behaves_like 'log'
358
+ end
359
+
352
360
  describe '#level' do
353
361
  context 'DEBUG' do
354
362
  let(:log_msg) { 'log message' }
@@ -645,7 +653,7 @@ describe Ougai::Logger do
645
653
  end
646
654
 
647
655
  it 'outputs info log with block on both loggers' do
648
- logger.info(log_msg, foo: 2)
656
+ logger.info { [log_msg, { foo: 2 }] }
649
657
  expect(item).to be_log_message(log_msg, 30)
650
658
  expect(item).to include_data(foo: 2)
651
659
  expect(another_item).to be_log_message(log_msg, 30)
@@ -3,7 +3,14 @@ require 'spec_helper'
3
3
  describe Ougai::Logging do
4
4
  subject do
5
5
  m = described_class
6
- Class.new { include m }.new
6
+
7
+ Class.new do
8
+ include m
9
+
10
+ def level
11
+ -1
12
+ end
13
+ end.new
7
14
  end
8
15
 
9
16
  describe '#weak_merge!' do
@@ -30,4 +37,54 @@ describe Ougai::Logging do
30
37
  expect{ subject.send(:append, :arg1, :arg2) }.to raise_error(NotImplementedError)
31
38
  end
32
39
  end
40
+
41
+ describe '#add' do
42
+ context 'severity is specified level' do
43
+ it 'calls append with specified level' do
44
+ data = double('data')
45
+ expect(subject).to receive(:append).with(::Logger::Severity::DEBUG, ['debug message', data])
46
+ subject.add(::Logger::Severity::DEBUG, 'debug message', data)
47
+ end
48
+ end
49
+
50
+ context 'severity is nil' do
51
+ it 'calls append with UNKNOWN level' do
52
+ expect(subject).to receive(:append).with(::Logger::Severity::UNKNOWN, ['message'])
53
+ subject.add(nil, 'message')
54
+ end
55
+ end
56
+
57
+ context 'block given' do
58
+ it 'calls append with yielded arguments' do
59
+ expect(subject).to receive(:append).with(::Logger::Severity::WARN, ['block message'])
60
+ subject.log(::Logger::Severity::WARN) { ['block message'] }
61
+ end
62
+ end
63
+ end
64
+
65
+ describe '#log' do
66
+ context 'severity is specified' do
67
+ it 'calls append with specified level' do
68
+ ex = Exception.new
69
+ expect(subject).to receive(:append).with(::Logger::Severity::FATAL, ['fatal message', ex])
70
+ subject.log(::Logger::Severity::FATAL, 'fatal message', ex)
71
+ end
72
+ end
73
+
74
+ context 'severity is nil' do
75
+ it 'calls append with UNKNOWN level' do
76
+ expect(subject).to receive(:append).with(::Logger::Severity::UNKNOWN, ['message'])
77
+ subject.log(nil, 'message')
78
+ end
79
+ end
80
+
81
+ context 'block given' do
82
+ it 'calls append with yielded arguments' do
83
+ ex = Exception.new
84
+ data = double('data')
85
+ expect(subject).to receive(:append).with(::Logger::Severity::INFO, ['block message', ex, data])
86
+ subject.log(::Logger::Severity::INFO) { ['block message', ex, data] }
87
+ end
88
+ end
89
+ end
33
90
  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.8.1
4
+ version: 1.9.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: 2019-08-28 00:00:00.000000000 Z
11
+ date: 2021-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -16,59 +16,59 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.4'
19
+ version: '3.10'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.4'
26
+ version: '3.10'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.11.0
33
+ version: 2.1.4
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 1.11.0
40
+ version: 2.1.4
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: 13.0.1
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: 13.0.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '3.0'
61
+ version: 3.9.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '3.0'
68
+ version: 3.9.0
69
69
  description: |2
70
70
  A structured logging system is capable of handling a message, custom data or an exception easily.
71
- It has JSON formatters compatible with Bunyan or pino for Node.js and human readable formatter with Awesome Print for console.
71
+ It has JSON formatters compatible with Bunyan or pino for Node.js and human readable formatter with Amazing Print for console.
72
72
  email:
73
73
  - toshi@tilfin.com
74
74
  executables: []
@@ -114,25 +114,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 2.3.0
117
+ version: 2.5.0
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  requirements: []
124
- rubygems_version: 3.0.1
124
+ rubygems_version: 3.1.2
125
125
  signing_key:
126
126
  specification_version: 4
127
127
  summary: JSON logger compatible with node-bunyan or pino is capable of handling structured
128
128
  data easily.
129
129
  test_files:
130
- - spec/formatters/pino_spec.rb
131
- - spec/formatters/base_spec.rb
132
- - spec/formatters/bunyan_spec.rb
133
- - spec/formatters/readable_spec.rb
134
130
  - spec/child_logger_spec.rb
135
131
  - spec/logging_spec.rb
136
- - spec/logger_spec.rb
137
132
  - spec/ougai_spec.rb
138
133
  - spec/spec_helper.rb
134
+ - spec/formatters/pino_spec.rb
135
+ - spec/formatters/readable_spec.rb
136
+ - spec/formatters/base_spec.rb
137
+ - spec/formatters/bunyan_spec.rb
138
+ - spec/logger_spec.rb