lorekeeper 2.0.0 → 2.2.1

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: 86c3b19f169215f175bd0770ab165fb68203e9aed3e8bd0cb01102d7c758bb67
4
- data.tar.gz: 6f9a9302433dec14b3a501b49bfd3610ad3904ab948d0c39390af539f55b3a7e
3
+ metadata.gz: 614a3b1372eba2d9fe6a56964d25f9048d2b6dde65ac3e135c023cff6af42b99
4
+ data.tar.gz: 45a541d7ccfb5f4aae3f0912dfdb69c19eb1dbca1aef86f4d1f33457df7886ec
5
5
  SHA512:
6
- metadata.gz: 62de8ba1553a553cc212bbb3d8a84e2fc8bb98902c3867dfebda2fe7e7f41a716b60d0be81cd281210fef9041972a40757ec9aed724dc468fa775471b62637dc
7
- data.tar.gz: '0186d14f8511e2aa0489dba5a98794477e1c7f9f7220af7a3f884947084a0c5d60195d434ed4b406fd3bf252ee5a4a9b3aac3b3a89f6fc832f01c1ddf31fd305'
6
+ metadata.gz: 1712e531beb4c0d47853c9128ee732bca5a7c21a016418ead6f812923c33207ec3d86543f7e9e69355344d3cdc4f5720f40be17e0563da798cacd8472fdf7725
7
+ data.tar.gz: 87ab1d4ae3df8fb09fa148f2d64cf2d87ebf7ab9423dcee06480a0a620f5ce2ec66d483d7a8f42243b0a41fed9c7c1d70670a490f632fc52d0c9fb65cc962fdb
@@ -14,7 +14,7 @@ jobs:
14
14
  runs-on: ubuntu-latest
15
15
  strategy:
16
16
  matrix:
17
- ruby-version: ['2.5', '2.6', '2.7', '3.0', '3.1']
17
+ ruby-version: ['2.7', '3.0', '3.1']
18
18
 
19
19
  steps:
20
20
  - uses: actions/checkout@v2
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.2.1
2
+ * Fix MultiLogger to not raise NoMethodError
3
+
4
+ # 2.2.0
5
+ * Remove metaprogramming from MultiLogger
6
+ * Drop support for Ruby < 2.7.0
7
+
8
+ # 2.1.0
9
+ * Modify SimpleLogger to properly log exceptions with named parameters
10
+
1
11
  # 2.0.0
2
12
  * Set `mode: :compat` in Oj.dump to stringify keys
3
13
  * Support Ruby 3.1
@@ -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 = message_param || (block && block.call) || progname
59
+ message = (block && block.call) || message_param || progname
60
60
  log_data(severity, message.freeze)
61
61
  end
62
62
 
@@ -8,7 +8,7 @@ module Lorekeeper
8
8
  class JSONLogger < FastLogger
9
9
  def initialize(file)
10
10
  reset_state
11
- @base_fields = { MESSAGE => '', TIMESTAMP => '', LEVEL => '' }
11
+ @base_fields = { TIMESTAMP => '', MESSAGE => '', LEVEL => '' }
12
12
  @backtrace_cleaner = set_backtrace_cleaner
13
13
  super(file)
14
14
  end
@@ -16,17 +16,34 @@ module Lorekeeper
16
16
  "Lorekeeper multilogger, loggers: #{@loggers.map(&:inspect)}"
17
17
  end
18
18
 
19
- if RUBY_VERSION > "2.6"
20
- def respond_to?(method, all_included = false)
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 method_missing(method, *args, &block)
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
- @iodevice.write("\e[#{color}m#{message}\e[0m\n")
31
+ @iodevice.write("\e[#{color}m#{message.gsub('\n', "\n").gsub('\t', "\t")}\e[0m\n")
32
32
  end
33
33
 
34
34
  def inspect
@@ -43,16 +43,31 @@ module Lorekeeper
43
43
  end
44
44
  end
45
45
 
46
- def exception(exception, custom_message = nil, custom_data = nil, level = :error)
47
- log_level = METHOD_SEVERITY_MAP[level] || ERROR
46
+ # To not raise NoMethodError for the methods defined in JSONLogger
47
+ def current_fields(*); end
48
+ def state(*); end
49
+ def add_thread_unsafe_fields(*); end
50
+ def remove_thread_unsafe_fields(*); end
51
+ def add_fields(*); end
52
+ def remove_fields(*); end
53
+
54
+ def exception(exception, custom_message = nil, custom_data = nil, custom_level = :error,
55
+ message: nil, data: nil, level: nil)
56
+
57
+ param_level = level || custom_level
58
+ param_data = data || custom_data
59
+ param_message = message || custom_message
60
+
61
+ log_level = METHOD_SEVERITY_MAP[param_level] || ERROR
48
62
 
49
63
  if exception.is_a?(Exception)
50
- backtrace = exception.backtrace || []
51
- message = custom_message || exception.message
52
- log_data(log_level, "#{exception.class}: #{exception.message}; #{message}, data: #{backtrace.join("\n")}")
64
+ message = param_message || exception.message
65
+ backtrace = "\n\nstack:\n#{exception.backtrace.join("\n")}" if exception.backtrace
66
+ data = "\n\ndata:\n#{param_data}" if param_data
67
+ log_data(log_level, "#{exception.class}: #{exception.message}; #{message} #{backtrace} #{data}")
53
68
  else
54
69
  log_data(METHOD_SEVERITY_MAP[:warn], 'Logger exception called without exception class.')
55
- error_with_data("#{exception.class}: #{exception.inspect} #{custom_message}", custom_data)
70
+ error_with_data("#{exception.class}: #{exception.inspect} #{param_message}", param_data)
56
71
  end
57
72
  end
58
73
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lorekeeper
4
- VERSION = '2.0.0'
4
+ VERSION = '2.2.1'
5
5
  end
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.5.0'
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.0.0
4
+ version: 2.2.1
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-05-03 00:00:00.000000000 Z
11
+ date: 2022-08-04 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.5.0
216
+ version: 2.7.0
217
217
  required_rubygems_version: !ruby/object:Gem::Requirement
218
218
  requirements:
219
219
  - - ">="