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 +4 -4
- data/Gemfile +2 -2
- data/Gemfile.lock +26 -26
- data/LICENSE.txt +1 -1
- data/README.md +4 -4
- data/lib/ougai/formatters/readable.rb +5 -4
- data/lib/ougai/logger.rb +7 -10
- data/lib/ougai/logging.rb +23 -16
- data/lib/ougai/version.rb +1 -1
- data/spec/logger_spec.rb +9 -1
- data/spec/logging_spec.rb +58 -1
- metadata +22 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b9254ac3650ca12026fbd3d3c6b474a8de478fb81ea82f19fecdff6b62c8b17
|
4
|
+
data.tar.gz: 95c71a88355673d0821596503057ad46761c3b508ab7a0b72b806462f8a3af7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c7cdf6d3ad6cfbaae66438cc40971a5cbd978ad9585c2ed4538cea3530184f53a3e0f2a87c22cfcfc581ecbb596eb7b7d2468edc26e7c1b05d27832d856bbcf
|
7
|
+
data.tar.gz: bed8c16d8e851d7b64d52b86084c13f333a0cee873ab4c1bd8670083c700597a587cb6edf39cead61711af747d30b0723d6bf63ac6eadd1c4de0fb7611d8f16c
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,53 +1,53 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ougai (1.
|
5
|
-
oj (~> 3.
|
4
|
+
ougai (1.9.0)
|
5
|
+
oj (~> 3.10)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
|
10
|
+
amazing_print (1.0.0)
|
11
11
|
diff-lcs (1.3)
|
12
12
|
docile (1.3.2)
|
13
|
-
json (2.
|
14
|
-
json (2.
|
15
|
-
oj (3.
|
16
|
-
rake (
|
17
|
-
rspec (3.
|
18
|
-
rspec-core (~> 3.
|
19
|
-
rspec-expectations (~> 3.
|
20
|
-
rspec-mocks (~> 3.
|
21
|
-
rspec-core (3.
|
22
|
-
rspec-support (~> 3.
|
23
|
-
rspec-expectations (3.
|
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.
|
26
|
-
rspec-mocks (3.
|
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.
|
29
|
-
rspec-support (3.
|
30
|
-
simplecov (0.17.
|
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.
|
36
|
+
yard (0.9.24)
|
37
37
|
|
38
38
|
PLATFORMS
|
39
39
|
java
|
40
40
|
ruby
|
41
41
|
|
42
42
|
DEPENDENCIES
|
43
|
-
|
44
|
-
bundler (>= 1.
|
43
|
+
amazing_print
|
44
|
+
bundler (>= 2.1.4)
|
45
45
|
ougai!
|
46
|
-
rake (
|
47
|
-
rspec (
|
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.
|
53
|
+
2.1.4
|
data/LICENSE.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2016-
|
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
|
[](https://badge.fury.io/rb/ougai)
|
5
|
-
[](http://www.rubydoc.info/gems/ougai/)
|
6
6
|
[](https://travis-ci.org/tilfin/ougai)
|
7
7
|
[](https://codeclimate.com/github/tilfin/ougai)
|
8
8
|
[](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 [
|
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
|
338
|
+
Add amazing_print to Gemfile and `bundle`
|
339
339
|
|
340
340
|
```ruby
|
341
|
-
gem '
|
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
|
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,
|
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 '
|
90
|
+
require 'amazing_print'
|
90
91
|
rescue LoadError
|
91
|
-
puts 'You must install the
|
92
|
+
puts 'You must install the amazing_print gem to use this output.'
|
92
93
|
raise
|
93
94
|
end
|
94
95
|
end
|
data/lib/ougai/logger.rb
CHANGED
@@ -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(
|
15
|
-
super
|
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
|
-
|
42
|
-
|
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
|
-
|
115
|
+
super_add(severity, data)
|
119
116
|
end
|
120
117
|
|
121
118
|
def to_item(args)
|
data/lib/ougai/logging.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/ougai/version.rb
CHANGED
data/spec/logger_spec.rb
CHANGED
@@ -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
|
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)
|
data/spec/logging_spec.rb
CHANGED
@@ -3,7 +3,14 @@ require 'spec_helper'
|
|
3
3
|
describe Ougai::Logging do
|
4
4
|
subject do
|
5
5
|
m = described_class
|
6
|
-
|
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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:
|
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:
|
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:
|
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:
|
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
|
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.
|
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.
|
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
|