contextual_logger 0.9.1 → 0.10.0.pre.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: 8bf5d991457c3e1e038e0d7642e80169cacddaac144146b1015c308096705f89
4
- data.tar.gz: 8c4d4e0b68c474d4440ce0032f02694a51b53a3b17ce5c3590dafc48b5c6d5f4
3
+ metadata.gz: 802c31d7f8703a4105e7ff1b0cd53b2a692cc92d3a6a9d2760f6cd34e6445f93
4
+ data.tar.gz: 847378acf2d1b5b9bdb2340a0d7e5712466eae68604c292e5138669333357fe5
5
5
  SHA512:
6
- metadata.gz: a4f3565314ca38f74e0396f3621deede596c1b3e342d4599fccafa08340b908ea1e9f1250c99acf8af48c6594ce70d66f263deebb0c49d527bbc80b7bb7a05fd
7
- data.tar.gz: 6210de2c953e183e90065e7da09984f608d873e6ce07d965037daa2e6fad0eaaca031b8858cbe5d72aa31b1cc5467ce22e0fdc092bd7e9d16a33950512dff940
6
+ metadata.gz: e8ee88e23ea62d3a1a69d2b3ed194a5b85533a4abf6fd3c4ad228ba99e49abff064dfff7731135f77389f2b8b9ff99722b0485f2c74f1ab97986151f9de2a861
7
+ data.tar.gz: af21224421af963cd2134114b136764eacfff5a76842feeb125f3e20aaf8c477f0869f4bc55613d3d94d39e17f54353078cb357fed813700d4d88dc6fc3ff207
@@ -7,6 +7,16 @@ require_relative './contextual_logger/redactor'
7
7
  require_relative './contextual_logger/context/handler'
8
8
 
9
9
  module ContextualLogger
10
+ LOG_LEVEL_NAMES_TO_SEVERITY =
11
+ {
12
+ debug: Logger::Severity::DEBUG,
13
+ info: Logger::Severity::INFO,
14
+ warn: Logger::Severity::WARN,
15
+ error: Logger::Severity::ERROR,
16
+ fatal: Logger::Severity::FATAL,
17
+ unknown: Logger::Severity::UNKNOWN
18
+ }.freeze
19
+
10
20
  class << self
11
21
  def new(logger)
12
22
  logger.extend(LoggerMixin)
@@ -17,22 +27,8 @@ module ContextualLogger
17
27
  if log_level.is_a?(Integer) && (Logger::Severity::DEBUG..Logger::Severity::UNKNOWN).include?(log_level)
18
28
  log_level
19
29
  else
20
- case log_level.to_s.downcase
21
- when 'debug'
22
- Logger::Severity::DEBUG
23
- when 'info'
24
- Logger::Severity::INFO
25
- when 'warn'
26
- Logger::Severity::WARN
27
- when 'error'
28
- Logger::Severity::ERROR
29
- when 'fatal'
30
- Logger::Severity::FATAL
31
- when 'unknown'
32
- Logger::Severity::UNKNOWN
33
- else
30
+ LOG_LEVEL_NAMES_TO_SEVERITY[log_level.to_s.downcase.to_sym] or
34
31
  raise ArgumentError, "invalid log level: #{log_level.inspect}"
35
- end
36
32
  end
37
33
  end
38
34
 
@@ -72,45 +68,54 @@ module ContextualLogger
72
68
  Context::Handler.current_context
73
69
  end
74
70
 
75
- def debug(message = nil, context = {})
76
- add(Logger::Severity::DEBUG, message.nil? && block_given? ? yield : message, **context)
77
- end
78
-
79
- def info(message = nil, context = {})
80
- add(Logger::Severity::INFO, message.nil? && block_given? ? yield : message, **context)
81
- end
71
+ # In the methods generated below, we assume that presence of context means new code that is
72
+ # aware of ContextualLogger...and that that code never uses progname.
73
+ # This is important because we only get 3 args total (not including &block) passed to `add`,
74
+ # in order to be compatible with classic implementations like in the plain ::Logger and
75
+ # ActiveSupport::Logger.broadcast.
82
76
 
83
- def warn(message = nil, context = {})
84
- add(Logger::Severity::WARN, message.nil? && block_given? ? yield : message, **context)
85
- end
77
+ # Note that we can't yield before `add` because `add` might skip it based on log_level. And we can't check
78
+ # log_level here because we might be running in ActiveSupport::Logging.broadcast which has multiple
79
+ # loggers, each with their own log_level.
86
80
 
87
- def error(message = nil, context = {})
88
- add(Logger::Severity::ERROR, message.nil? && block_given? ? yield : message, **context)
89
- end
90
-
91
- def fatal(message = nil, context = {})
92
- add(Logger::Severity::FATAL, message.nil? && block_given? ? yield : message, **context)
93
- end
94
-
95
- def unknown(message = nil, context = {})
96
- add(Logger::Severity::UNKNOWN, message.nil? && block_given? ? yield : message, **context)
81
+ LOG_LEVEL_NAMES_TO_SEVERITY.each do |method_name, log_level|
82
+ class_eval(<<~EOS, __FILE__, __LINE__ + 1)
83
+ def #{method_name}(arg = nil, **context, &block)
84
+ if context.empty?
85
+ add(#{log_level}, nil, arg, &block)
86
+ else
87
+ if arg.nil?
88
+ add(#{log_level}, nil, context, &block)
89
+ elsif block
90
+ add(#{log_level}, nil, context) do
91
+ "\#{ContextualLogger.normalize_message(arg)}: \#{ContextualLogger.normalize_message(block.call)}"
92
+ end
93
+ else
94
+ add(#{log_level}, arg, context)
95
+ end
96
+ end
97
+ end
98
+ EOS
97
99
  end
98
100
 
99
101
  def log_level_enabled?(severity)
100
102
  severity >= level
101
103
  end
102
104
 
103
- def add(init_severity, message = nil, init_progname = nil, **context) # Ruby will prefer to match hashes up to last ** argument
104
- severity = init_severity || UNKNOWN
105
+ def add(arg_severity, arg1 = nil, arg2 = nil, **context) # Ruby will prefer to match hashes up to last ** argument
106
+ severity = arg_severity || UNKNOWN
105
107
  if log_level_enabled?(severity)
106
- progname = init_progname || @progname
107
- if message.nil?
108
+ if arg1.nil?
108
109
  if block_given?
109
110
  message = yield
111
+ progname = arg2 || @progname
110
112
  else
111
- message = init_progname
113
+ message = arg2
112
114
  progname = @progname
113
115
  end
116
+ else
117
+ message = arg1
118
+ progname = arg2 || @progname
114
119
  end
115
120
  write_entry_to_log(severity, Time.now, progname, message, context: current_context_for_thread.deep_merge(context))
116
121
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ContextualLogger
4
- VERSION = '0.9.1'
4
+ VERSION = '0.10.0.pre.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contextual_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.10.0.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Ebentier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-18 00:00:00.000000000 Z
11
+ date: 2020-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -67,9 +67,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
67
  version: '0'
68
68
  required_rubygems_version: !ruby/object:Gem::Requirement
69
69
  requirements:
70
- - - ">="
70
+ - - ">"
71
71
  - !ruby/object:Gem::Version
72
- version: '0'
72
+ version: 1.3.1
73
73
  requirements: []
74
74
  rubygems_version: 3.0.3
75
75
  signing_key: