lorekeeper 2.0.0 → 2.2.1

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: 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
  - - ">="