contextual_logger 1.2.0.colin.4 → 1.2.0.pre.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 +4 -4
- data/lib/contextual_logger/context/handler.rb +28 -0
- data/lib/contextual_logger/logger_with_context.rb +0 -4
- data/lib/contextual_logger/version.rb +1 -1
- data/lib/contextual_logger.rb +12 -22
- metadata +3 -4
- data/lib/contextual_logger/context.rb +0 -18
- data/lib/contextual_logger/context_handler.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5ee8cad9d62ca2d8aeec81f2626b56b4aa6b1db2c6b626518a4708d590ddb4c
|
4
|
+
data.tar.gz: 71be08f271be68de04f942abfa301a2a5ec54be54d0399bb01db8bcf52a07037
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b455d41a46223ea9c6e2583a7d03d81940743215c4eb1dd5977d6ffc8f8ffcb618ce27a3b975fed211987b592e0cfdbc1e691ceef155641764c5d8938da0679
|
7
|
+
data.tar.gz: 6600b357b1dc7b25ee8e746f17280a7e74ac184b38a03340f48e835659259135321a0c0ff0d7c387a7b06b9804b82ad63f8b76a911790a6fb5c2f99a61c0cfdc
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ContextualLogger
|
4
|
+
module Context
|
5
|
+
class Handler
|
6
|
+
THREAD_CONTEXT_NAMESPACE = 'ContextualLoggerCurrentLoggingContext'
|
7
|
+
|
8
|
+
attr_reader :previous_context, :context
|
9
|
+
|
10
|
+
def self.current_context
|
11
|
+
Thread.current[THREAD_CONTEXT_NAMESPACE] || {}
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(context, previous_context: nil)
|
15
|
+
@previous_context = previous_context || self.class.current_context
|
16
|
+
@context = context
|
17
|
+
end
|
18
|
+
|
19
|
+
def set!
|
20
|
+
Thread.current[THREAD_CONTEXT_NAMESPACE] = context
|
21
|
+
end
|
22
|
+
|
23
|
+
def reset!
|
24
|
+
Thread.current[THREAD_CONTEXT_NAMESPACE] = previous_context
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/contextual_logger.rb
CHANGED
@@ -4,8 +4,7 @@ require 'active_support'
|
|
4
4
|
require 'active_support/core_ext/module/delegation'
|
5
5
|
require 'json'
|
6
6
|
require_relative './contextual_logger/redactor'
|
7
|
-
require_relative './contextual_logger/context'
|
8
|
-
require_relative './contextual_logger/context_handler'
|
7
|
+
require_relative './contextual_logger/context/handler'
|
9
8
|
|
10
9
|
module ContextualLogger
|
11
10
|
LOG_LEVEL_NAMES_TO_SEVERITY =
|
@@ -44,40 +43,31 @@ module ContextualLogger
|
|
44
43
|
end
|
45
44
|
|
46
45
|
module LoggerMixin
|
47
|
-
include Context
|
48
|
-
|
49
46
|
delegate :register_secret, :register_secret_regex, to: :redactor
|
50
47
|
|
51
|
-
def global_context
|
52
|
-
@global_context ||= {}.freeze
|
53
|
-
end
|
54
|
-
|
55
48
|
def global_context=(context)
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
def current_context
|
60
|
-
current_context_override || global_context
|
49
|
+
Context::Handler.new(context).set!
|
61
50
|
end
|
62
51
|
|
63
|
-
# TODO: Deprecate current_context_for_thread in v2.0.
|
64
|
-
alias current_context_for_thread current_context
|
65
|
-
|
66
52
|
def with_context(context)
|
67
|
-
|
68
|
-
|
53
|
+
context_handler = Context::Handler.new(current_context_for_thread.deep_merge(context))
|
54
|
+
context_handler.set!
|
69
55
|
if block_given?
|
70
56
|
begin
|
71
57
|
yield
|
72
58
|
ensure
|
73
|
-
|
59
|
+
context_handler.reset!
|
74
60
|
end
|
75
61
|
else
|
76
|
-
# If no block given,
|
77
|
-
|
62
|
+
# If no block given, the context handler is returned to the caller so they can handle reset! themselves.
|
63
|
+
context_handler
|
78
64
|
end
|
79
65
|
end
|
80
66
|
|
67
|
+
def current_context_for_thread
|
68
|
+
Context::Handler.current_context
|
69
|
+
end
|
70
|
+
|
81
71
|
# In the methods generated below, we assume that presence of context means new code that is
|
82
72
|
# aware of ContextualLogger...and that that code never uses progname.
|
83
73
|
# This is important because we only get 3 args total (not including &block) passed to `add`,
|
@@ -127,7 +117,7 @@ module ContextualLogger
|
|
127
117
|
message = arg1
|
128
118
|
progname = arg2 || @progname
|
129
119
|
end
|
130
|
-
write_entry_to_log(severity, Time.now, progname, message, context:
|
120
|
+
write_entry_to_log(severity, Time.now, progname, message, context: current_context_for_thread.deep_merge(context))
|
131
121
|
end
|
132
122
|
|
133
123
|
true
|
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.2.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: 2023-09
|
11
|
+
date: 2023-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -45,8 +45,7 @@ extensions: []
|
|
45
45
|
extra_rdoc_files: []
|
46
46
|
files:
|
47
47
|
- lib/contextual_logger.rb
|
48
|
-
- lib/contextual_logger/context.rb
|
49
|
-
- lib/contextual_logger/context_handler.rb
|
48
|
+
- lib/contextual_logger/context/handler.rb
|
50
49
|
- lib/contextual_logger/logger_with_context.rb
|
51
50
|
- lib/contextual_logger/overrides/active_support/tagged_logging/formatter.rb
|
52
51
|
- lib/contextual_logger/redactor.rb
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ContextualLogger
|
4
|
-
module Context
|
5
|
-
def thread_context_for_logger_instance
|
6
|
-
# We include the object_id here to make these thread/fiber locals unique per logger instance.
|
7
|
-
@thread_context_for_logger_instance ||= "ContextualLogger::Context.context_for_#{object_id}".to_sym
|
8
|
-
end
|
9
|
-
|
10
|
-
def current_context_override
|
11
|
-
Thread.current[thread_context_for_logger_instance]
|
12
|
-
end
|
13
|
-
|
14
|
-
def current_context_override=(context_override)
|
15
|
-
Thread.current[thread_context_for_logger_instance] = context_override.freeze
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ContextualLogger
|
4
|
-
class ContextHandler
|
5
|
-
def initialize(instance, previous_context_override)
|
6
|
-
@instance = instance
|
7
|
-
@previous_context_override = previous_context_override
|
8
|
-
end
|
9
|
-
|
10
|
-
def reset!
|
11
|
-
@instance.current_context_override = @previous_context_override
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|