contextual_logger 1.2.0 → 1.3.0.dg.pre.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1345e9a0914c195f20d4cb22012452faff2bde5c9a869ee41db6a5c80ac70b03
4
- data.tar.gz: 9614e6145e032712d0e8ebf64b1266ed7872200be70a782f5b1a9ed54edeeb1d
3
+ metadata.gz: 96fa2fd042325883674d751a6b2443c23e9e6b195f9f15ade2826832c6557735
4
+ data.tar.gz: 180923158cdaac1c7cd63755ca93e4cda42aaf48bab442b21981264a255a5765
5
5
  SHA512:
6
- metadata.gz: ec61e408108a4485223e9c4d07029957e345f39d689d797db26263c37bfe5264661f11909ac808e2e0102176b172a7f2867b1d3bec624e58f3a927c6f53996e3
7
- data.tar.gz: 28976f222764d2323103690a8e76896b85914f59f594c0264554fd502832dfedc4fdeb2fac988baa98f6998dedadbb283e2da3ff4a647dd0341446d7b0cc99c4
6
+ metadata.gz: 66081a0a05dded370cf77b2e60b2c20884e8993a362bf6be4674b3c4b0c95d4811c208b8b6ab64ea99495fc7ca05b16ba9ef779cb39f4169620a06eac0c12fce
7
+ data.tar.gz: 04d1997d713eec2231a08e2085728db8ef438268835b4ac6e3eb866ec01c7d5df0447677de127c286236aa0485d4e233b36214234aa661cd0c30c6fe52eaaef8
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ContextualLogger
4
- VERSION = '1.2.0'
4
+ VERSION = '1.3.0.dg.pre.0'
5
5
  end
@@ -19,6 +19,9 @@ module ContextualLogger
19
19
  unknown: Logger::Severity::UNKNOWN
20
20
  }.freeze
21
21
 
22
+ class LambdaAlreadyDefinedError < StandardError
23
+ end
24
+
22
25
  class << self
23
26
  def new(logger)
24
27
  logger.extend(LoggerMixin)
@@ -57,6 +60,26 @@ module ContextualLogger
57
60
  @global_context ||= Context::EMPTY_CONTEXT
58
61
  end
59
62
 
63
+ def add_global_context_lambda(field, lambda)
64
+ if field.blank?
65
+ raise ArgumentError, "The field cannot be empty"
66
+ end
67
+
68
+ unless lambda.respond_to?(:call)
69
+ raise ArgumentError, "A lambda must respond to the :call method"
70
+ end
71
+
72
+ if global_context_lambdas[field]
73
+ raise ::ContextualLogger::LambdaAlreadyDefinedError, "A lambda for `#{field}` is already defined"
74
+ end
75
+
76
+ @global_context_lambdas[field] = lambda
77
+ end
78
+
79
+ def global_context_lambdas
80
+ @global_context_lambdas ||= {}
81
+ end
82
+
60
83
  def global_context=(context)
61
84
  if (global_context_lock_message = ::ContextualLogger.global_context_lock_message)
62
85
  raise ::ContextualLogger::GlobalContextIsLocked, global_context_lock_message
@@ -136,7 +159,8 @@ module ContextualLogger
136
159
  message = arg1
137
160
  progname = arg2 || @progname
138
161
  end
139
- write_entry_to_log(severity, Time.now, progname, message, context: deep_merge_with_current_context(context))
162
+ full_context = evaluate_global_context_lambdas(deep_merge_with_current_context(context))
163
+ write_entry_to_log(severity, Time.now, progname, message, context: full_context)
140
164
  end
141
165
 
142
166
  true
@@ -185,5 +209,13 @@ module ContextualLogger
185
209
  current_context
186
210
  end
187
211
  end
212
+
213
+ def evaluate_global_context_lambdas(context)
214
+ if global_context_lambdas.empty?
215
+ context
216
+ else
217
+ global_context_lambdas.transform_values { |lambda| lambda.call }.merge(context)
218
+ end
219
+ end
188
220
  end
189
221
  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: 1.2.0
4
+ version: 1.3.0.dg.pre.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: 2023-09-14 00:00:00.000000000 Z
11
+ date: 2023-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -69,9 +69,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
69
69
  version: '0'
70
70
  required_rubygems_version: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">="
72
+ - - ">"
73
73
  - !ruby/object:Gem::Version
74
- version: '0'
74
+ version: 1.3.1
75
75
  requirements: []
76
76
  rubygems_version: 3.1.6
77
77
  signing_key: