contextual_logger 0.12.0.pre.1 → 1.0.0

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: c2ef105e4dfaf32e5e215d83e05ac6ba4f5c67a32cb11e214598a668b4afd34e
4
- data.tar.gz: d8fa3b949bf2880a1992f6bce1fcfd6b6b59ec4aa46340d9752c8b27fc7dd6cc
3
+ metadata.gz: a4baf217bb735acc0a7c3b0ca8631762d82350d5c694b2af55ef04f59b838ed1
4
+ data.tar.gz: 0b3a3af427439d0e03aab2eef021836e88de6b811157005403592d30ea7016dc
5
5
  SHA512:
6
- metadata.gz: 3df6d16bf7ffc7cc36bb0f95103222f1791a228ee4e1034ef883261bdaa10ac5d16c57fafa6cdd58d524fee2ebec5c86fab5b2dcc3df05eaf2d35acea1f00eed
7
- data.tar.gz: e1db9f65be3eb35690cea59ceee623188b40f03377b7a467d12d2644ed8a957246afb70a43eb736a639d541ecdf093d7832f909b0878d1e87c41d889e9be44ea
6
+ metadata.gz: a6fdc0ec5b5fdf600cbc7be5cda513445b32854bfd6fe39bdb008a6e37f0bda984c04802688bbbb144872b59f0505e495488e298cd83db781cef7fbee0741e00
7
+ data.tar.gz: 0a45ff4a201df1df0403789076e5bc55fe4c38af96898827fb8e023309f1215e1a5ef1736a7b9cb2e9f019d35f53fdf2d057edb630f3f5f9358dc06ed939ef25
@@ -7,10 +7,8 @@ module ContextualLogger
7
7
 
8
8
  attr_reader :previous_context, :context
9
9
 
10
- class << self
11
- def current_context
12
- Thread.current[THREAD_CONTEXT_NAMESPACE] || {}
13
- end
10
+ def self.current_context
11
+ Thread.current[THREAD_CONTEXT_NAMESPACE] || {}
14
12
  end
15
13
 
16
14
  def initialize(context, previous_context: nil)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ContextualLogger
4
- VERSION = '0.12.0.pre.1'
4
+ VERSION = '1.0.0'
5
5
  end
@@ -5,7 +5,6 @@ require 'active_support/core_ext/module/delegation'
5
5
  require 'json'
6
6
  require_relative './contextual_logger/redactor'
7
7
  require_relative './contextual_logger/context/handler'
8
- require_relative './contextual_logger/context/registry'
9
8
 
10
9
  module ContextualLogger
11
10
  LOG_LEVEL_NAMES_TO_SEVERITY =
@@ -46,22 +45,12 @@ module ContextualLogger
46
45
  module LoggerMixin
47
46
  delegate :register_secret, to: :redactor
48
47
 
49
- def register_context(&block)
50
- block or raise ArgumentError, 'Block of context definitions was not passed'
51
- @context_registry = Context::Registry.new(&block)
52
- end
53
-
54
48
  def global_context=(context)
55
- Context::Handler.new(context_registry.format(context)).set!
49
+ Context::Handler.new(context).set!
56
50
  end
57
51
 
58
52
  def with_context(context)
59
- context_handler = Context::Handler.new(
60
- current_context_for_thread.deep_merge(
61
- context_registry.format(context)
62
- )
63
- )
64
-
53
+ context_handler = Context::Handler.new(current_context_for_thread.deep_merge(context))
65
54
  context_handler.set!
66
55
  if block_given?
67
56
  begin
@@ -96,11 +85,11 @@ module ContextualLogger
96
85
  add(#{log_level}, nil, arg, &block)
97
86
  else
98
87
  if arg.nil?
99
- add(#{log_level}, nil, context, &block)
88
+ add(#{log_level}, nil, **context, &block)
100
89
  elsif block
101
- add(#{log_level}, nil, context.merge(progname: arg), &block)
90
+ add(#{log_level}, nil, **context.merge(progname: arg), &block)
102
91
  else
103
- add(#{log_level}, arg, context)
92
+ add(#{log_level}, arg, **context)
104
93
  end
105
94
  end
106
95
  end
@@ -128,7 +117,7 @@ module ContextualLogger
128
117
  message = arg1
129
118
  progname = arg2 || @progname
130
119
  end
131
- write_entry_to_log(severity, Time.now, progname, message, context: current_context_for_thread.deep_merge(context_registry.format(context)))
120
+ write_entry_to_log(severity, Time.now, progname, message, context: current_context_for_thread.deep_merge(context))
132
121
  end
133
122
 
134
123
  true
@@ -144,13 +133,6 @@ module ContextualLogger
144
133
 
145
134
  private
146
135
 
147
- def context_registry
148
- @context_registry ||= Context::Registry.new do
149
- strict false
150
- raise_on_missing_definition false
151
- end
152
- end
153
-
154
136
  def redactor
155
137
  @redactor ||= Redactor.new
156
138
  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.12.0.pre.1
4
+ version: 1.0.0
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-10-28 00:00:00.000000000 Z
11
+ date: 2022-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -46,12 +46,6 @@ extra_rdoc_files: []
46
46
  files:
47
47
  - lib/contextual_logger.rb
48
48
  - lib/contextual_logger/context/handler.rb
49
- - lib/contextual_logger/context/registry.rb
50
- - lib/contextual_logger/context/registry_types/boolean.rb
51
- - lib/contextual_logger/context/registry_types/date.rb
52
- - lib/contextual_logger/context/registry_types/hash.rb
53
- - lib/contextual_logger/context/registry_types/number.rb
54
- - lib/contextual_logger/context/registry_types/string.rb
55
49
  - lib/contextual_logger/logger_with_context.rb
56
50
  - lib/contextual_logger/overrides/active_support/tagged_logging/formatter.rb
57
51
  - lib/contextual_logger/redactor.rb
@@ -73,11 +67,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
73
67
  version: '0'
74
68
  required_rubygems_version: !ruby/object:Gem::Requirement
75
69
  requirements:
76
- - - ">"
70
+ - - ">="
77
71
  - !ruby/object:Gem::Version
78
- version: 1.3.1
72
+ version: '0'
79
73
  requirements: []
80
- rubygems_version: 3.0.3
74
+ rubygems_version: 3.1.6
81
75
  signing_key:
82
76
  specification_version: 4
83
77
  summary: Add context to your logger
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'registry_types/string'
4
- require_relative 'registry_types/boolean'
5
- require_relative 'registry_types/number'
6
- require_relative 'registry_types/date'
7
- require_relative 'registry_types/hash'
8
-
9
- # This class is responsible for holding the registered context shape that will
10
- # be used by the LoggerMixin to make sure that the context matches the shape
11
- # defined
12
-
13
- # logger.configure_context do
14
- # strict false
15
- #
16
- # string test_string
17
- # integer test_integer
18
- # hash :test_hash do
19
- # string :test_string_in_hash
20
- # date :date_time_in_hash
21
- # end
22
- # end
23
-
24
- module ContextualLogger
25
- module Context
26
- class Registry < RegistryTypes::Hash
27
- class DuplicateDefinitionError < StandardError; end
28
- class MissingDefinitionError < StandardError; end
29
-
30
- def initialize(&definitions)
31
- @strict = true
32
- @raise_on_missing_definition = true
33
-
34
- super
35
- end
36
-
37
- def strict?
38
- @strict
39
- end
40
-
41
- def raise_on_missing_definition?
42
- @raise_on_missing_definition
43
- end
44
-
45
- def format(context)
46
- if strict?
47
- super(context, raise_on_missing_definition?)
48
- else
49
- context
50
- end
51
- end
52
-
53
- alias context_shape to_h
54
-
55
- def to_h
56
- {
57
- strict: @strict,
58
- context_shape: context_shape
59
- }
60
- end
61
-
62
- private
63
-
64
- def strict(value)
65
- @strict = value
66
- end
67
-
68
- def raise_on_missing_definition(value)
69
- @raise_on_missing_definition = value
70
- end
71
- end
72
- end
73
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ContextualLogger
4
- module Context
5
- module RegistryTypes
6
- class Boolean
7
- attr_reader :formatter
8
-
9
- def initialize(formatter: nil)
10
- @formatter = formatter || ->(value) { value ? true : false }
11
- end
12
-
13
- def to_h
14
- { type: :boolean, formatter: formatter }
15
- end
16
-
17
- def format(value)
18
- case formatter
19
- when Proc
20
- formatter.call(value)
21
- else
22
- value.send(formatter)
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ContextualLogger
4
- module Context
5
- module RegistryTypes
6
- class Date
7
- attr_reader :formatter
8
-
9
- def initialize(formatter: nil)
10
- @formatter = formatter || ->(value) { value.iso8601(6) }
11
- end
12
-
13
- def to_h
14
- { type: :date, formatter: formatter }
15
- end
16
-
17
- def format(value)
18
- case formatter
19
- when Proc
20
- formatter.call(value)
21
- else
22
- value.send(formatter)
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'string'
4
- require_relative 'boolean'
5
- require_relative 'number'
6
- require_relative 'date'
7
-
8
- module ContextualLogger
9
- module Context
10
- module RegistryTypes
11
- class Hash
12
- def initialize(&definitions)
13
- @definitions = {}
14
-
15
- run(&definitions)
16
- end
17
-
18
- def to_h
19
- @definitions.reduce({}) do |shape_hash, (key, value)|
20
- shape_hash.merge(key => value.to_h)
21
- end
22
- end
23
-
24
- def format(context, raise_on_missing_definition)
25
- context.reduce({}) do |formatted_context, (key, value)|
26
- if (definition = @definitions[key])
27
- formatted_context[key] = if definition.is_a?(RegistryTypes::Hash)
28
- definition.format(value, raise_on_missing_definition)
29
- else
30
- definition.format(value)
31
- end
32
- elsif raise_on_missing_definition
33
- raise Registry::MissingDefinitionError, "Attempting to apply context #{key} that is missing a definition in the registry"
34
- end
35
-
36
- formatted_context
37
- end
38
- end
39
-
40
- private
41
-
42
- def string(context_key, formatter: nil)
43
- dedup(context_key, :string)
44
- @definitions[context_key] = RegistryTypes::String.new(formatter: formatter)
45
- end
46
-
47
- def boolean(context_key, formatter: nil)
48
- dedup(context_key, :boolean)
49
- @definitions[context_key] = RegistryTypes::Boolean.new(formatter: formatter)
50
- end
51
-
52
- def number(context_key, formatter: nil)
53
- dedup(context_key, :number)
54
- @definitions[context_key] = RegistryTypes::Number.new(formatter: formatter)
55
- end
56
-
57
- def date(context_key, formatter: nil)
58
- dedup(context_key, :date)
59
- @definitions[context_key] = RegistryTypes::Date.new(formatter: formatter)
60
- end
61
-
62
- def hash(context_key, &definitions)
63
- dedup(context_key, :hash)
64
- @definitions[context_key] = RegistryTypes::Hash.new(&definitions)
65
- end
66
-
67
- def run(&definitions)
68
- instance_eval(&definitions)
69
- end
70
-
71
- def dedup(key, type)
72
- @definitions.include?(key) and
73
- raise Registry::DuplicateDefinitionError, "Defining duplicate entry #{key} previously as #{@definitions[key]} and now as #{type}"
74
- end
75
- end
76
- end
77
- end
78
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ContextualLogger
4
- module Context
5
- module RegistryTypes
6
- class Number
7
- attr_reader :formatter
8
-
9
- def initialize(formatter: nil)
10
- @formatter = formatter || :to_i
11
- end
12
-
13
- def to_h
14
- { type: :number, formatter: formatter }
15
- end
16
-
17
- def format(value)
18
- case formatter
19
- when Proc
20
- formatter.call(value)
21
- else
22
- value.send(formatter)
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ContextualLogger
4
- module Context
5
- module RegistryTypes
6
- class String
7
- attr_reader :formatter
8
-
9
- def initialize(formatter: nil)
10
- @formatter = formatter || :to_s
11
- end
12
-
13
- def to_h
14
- { type: :string, formatter: formatter }
15
- end
16
-
17
- def format(value)
18
- case formatter
19
- when Proc
20
- formatter.call(value)
21
- else
22
- value.send(formatter)
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end