lorekeeper 2.1.0 → 2.3.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/.github/workflows/build.yml +1 -1
- data/.rubocop.yml +4 -0
- data/CHANGELOG.md +10 -0
- data/lib/lorekeeper/fast_logger.rb +5 -1
- data/lib/lorekeeper/json_logger.rb +6 -2
- data/lib/lorekeeper/multi_logger.rb +29 -8
- data/lib/lorekeeper/simple_logger.rb +1 -1
- data/lib/lorekeeper/version.rb +1 -1
- data/lorekeeper.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1b323055eadcf9d776721dbf722fc84a3fa9c17d43fc2e1874d084eb4fab848a
|
4
|
+
data.tar.gz: 50329808d64339ccb223eeb8d9e44f3eeeccfbdf8e32bfb746d26db31d5f7123
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08252a6d8b16fdf22554adb3b2c7b19b4d6c5d36fb154759004a178407b60a82affd2f4950b3b942955013d20464f8ec41d2222f75cc05349fd042e31a728ee5'
|
7
|
+
data.tar.gz: c46a95ddabda346971ecdda9039a1b98a0c816be963e5024cdac49461327f557d12d3842345979b54dff8771aca1f2e0b6e5b2046f91ce00d9a889f03f9d5408
|
data/.github/workflows/build.yml
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,2 +1,6 @@
|
|
1
1
|
Metrics/LineLength:
|
2
2
|
Max: 120
|
3
|
+
# https://github.com/rubocop/rubocop/blob/20990ed3831589c0d9f202107b1b580ead8ef2c5/lib/rubocop/cop/style/single_line_methods.rb#L11
|
4
|
+
# TODO: add "EnforcedStyle: allow_single_line" once all rubys are > 3.0 to autocorrect all single-line methods to endless
|
5
|
+
Style/SingleLineMethods:
|
6
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
# 2.3.0
|
2
|
+
* Add `#write` method support to all loggers
|
3
|
+
|
4
|
+
# 2.2.1
|
5
|
+
* Fix MultiLogger to not raise NoMethodError
|
6
|
+
|
7
|
+
# 2.2.0
|
8
|
+
* Remove metaprogramming from MultiLogger
|
9
|
+
* Drop support for Ruby < 2.7.0
|
10
|
+
|
1
11
|
# 2.1.0
|
2
12
|
* Modify SimpleLogger to properly log exceptions with named parameters
|
3
13
|
|
@@ -56,7 +56,7 @@ module Lorekeeper
|
|
56
56
|
# This is part of the standard Logger API, we need this to be compatible
|
57
57
|
def add(severity, message_param = nil, progname = nil, &block)
|
58
58
|
return true if severity < @level
|
59
|
-
message =
|
59
|
+
message = (block && block.call) || message_param || progname
|
60
60
|
log_data(severity, message.freeze)
|
61
61
|
end
|
62
62
|
|
@@ -75,6 +75,10 @@ module Lorekeeper
|
|
75
75
|
|
76
76
|
# inherited classes probably want to reimplement this
|
77
77
|
def log_data(_severity, message)
|
78
|
+
write(message)
|
79
|
+
end
|
80
|
+
|
81
|
+
def write(message)
|
78
82
|
@iodevice.write(message)
|
79
83
|
end
|
80
84
|
|
@@ -8,7 +8,7 @@ module Lorekeeper
|
|
8
8
|
class JSONLogger < FastLogger
|
9
9
|
def initialize(file)
|
10
10
|
reset_state
|
11
|
-
@base_fields = {
|
11
|
+
@base_fields = { TIMESTAMP => '', MESSAGE => '', LEVEL => '' }
|
12
12
|
@backtrace_cleaner = set_backtrace_cleaner
|
13
13
|
super(file)
|
14
14
|
end
|
@@ -94,6 +94,10 @@ module Lorekeeper
|
|
94
94
|
"Lorekeeper JSON logger. IO: #{@file.inspect}"
|
95
95
|
end
|
96
96
|
|
97
|
+
def write(message)
|
98
|
+
super(Oj.dump(message, mode: :compat, cache_keys: true, cache_str: 5) << "\n")
|
99
|
+
end
|
100
|
+
|
97
101
|
private
|
98
102
|
|
99
103
|
# Some instrumentation libraries pollute the stacktrace and create a large output which may
|
@@ -148,7 +152,7 @@ module Lorekeeper
|
|
148
152
|
fields_to_log[TIMESTAMP] = Time.now.utc.strftime(DATE_FORMAT)
|
149
153
|
fields_to_log[LEVEL] = SEVERITY_NAMES_MAP[severity]
|
150
154
|
|
151
|
-
|
155
|
+
write(fields_to_log)
|
152
156
|
end
|
153
157
|
end
|
154
158
|
end
|
@@ -16,17 +16,34 @@ module Lorekeeper
|
|
16
16
|
"Lorekeeper multilogger, loggers: #{@loggers.map(&:inspect)}"
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
def
|
19
|
+
# Define all common logging methods within Multilogger to avoid NoMethodError
|
20
|
+
def debug(*args, &block); call_loggers(:debug, *args, &block); end
|
21
|
+
|
22
|
+
def debug_with_data(*args, &block); call_loggers(:debug, *args, &block); end
|
23
|
+
|
24
|
+
def info(*args, &block); call_loggers(:info, *args, &block); end
|
25
|
+
|
26
|
+
def info_with_data(*args, &block); call_loggers(:info, *args, &block); end
|
27
|
+
|
28
|
+
def warn(*args, &block); call_loggers(:warn, *args, &block); end
|
29
|
+
|
30
|
+
def warn_with_data(*args, &block); call_loggers(:warn, *args, &block); end
|
31
|
+
|
32
|
+
def error(*args, &block); call_loggers(:error, *args, &block); end
|
33
|
+
|
34
|
+
def error_with_data(*args, &block); call_loggers(:error, *args, &block); end
|
35
|
+
|
36
|
+
def fatal(*args, &block); call_loggers(:fatal, *args, &block); end
|
37
|
+
|
38
|
+
def fatal_with_data(*args, &block); call_loggers(:fatal, *args, &block); end
|
39
|
+
|
40
|
+
def write(*args); call_loggers(:write, *args); end
|
41
|
+
|
42
|
+
def respond_to?(method, all_included: false)
|
21
43
|
@loggers.all? { |logger| logger.respond_to?(method, all_included) }
|
22
44
|
end
|
23
|
-
else
|
24
|
-
def respond_to?(method)
|
25
|
-
@loggers.all? { |logger| logger.respond_to?(method) }
|
26
|
-
end
|
27
|
-
end
|
28
45
|
|
29
|
-
def
|
46
|
+
def call_loggers(method, *args, &block)
|
30
47
|
result = @loggers.map do |logger|
|
31
48
|
logger.public_send(method, *args, &block) if logger.respond_to?(method)
|
32
49
|
end
|
@@ -34,5 +51,9 @@ end
|
|
34
51
|
# Then hope for the best taking the first value
|
35
52
|
result.compact.uniq.first
|
36
53
|
end
|
54
|
+
|
55
|
+
def method_missing(method, *args, &block)
|
56
|
+
call_loggers(method, *args, &block)
|
57
|
+
end
|
37
58
|
end
|
38
59
|
end
|
@@ -28,7 +28,7 @@ module Lorekeeper
|
|
28
28
|
# \e[colorm sets a color \e[0m resets all properties
|
29
29
|
def log_data(severity, message)
|
30
30
|
color = SEVERITY_TO_COLOR_MAP[severity]
|
31
|
-
|
31
|
+
write("\e[#{color}m#{message.gsub('\n', "\n").gsub('\t', "\t")}\e[0m\n")
|
32
32
|
end
|
33
33
|
|
34
34
|
def inspect
|
data/lib/lorekeeper/version.rb
CHANGED
data/lorekeeper.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
|
23
|
-
spec.required_ruby_version = '>= 2.
|
23
|
+
spec.required_ruby_version = '>= 2.7.0'
|
24
24
|
|
25
25
|
spec.add_dependency 'oj', '>= 3.12', '< 4.0'
|
26
26
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lorekeeper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordi Polo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|
@@ -213,7 +213,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
213
213
|
requirements:
|
214
214
|
- - ">="
|
215
215
|
- !ruby/object:Gem::Version
|
216
|
-
version: 2.
|
216
|
+
version: 2.7.0
|
217
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
218
|
requirements:
|
219
219
|
- - ">="
|