ougai 1.8.1 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
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