contextual_logger 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/contextual_logger.rb +28 -8
- data/lib/contextual_logger/redactor.rb +28 -0
- data/lib/contextual_logger/version.rb +5 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0118241ab98c2c3ec5f47741cc2e173a22bd4c13'
|
4
|
+
data.tar.gz: 3370e95855bc8c7076581ea19564af108b0e9e1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54580c2fc2920f81203dba48b911be2034e93892d6cab427b93557c54e9f227e09f7ad6c04ec6bd74cd9d758fbf3a72acd7923f63cfb5c5cd264d60e92d5ef0c
|
7
|
+
data.tar.gz: dbde45342044cfba8a7c98e15febf3fc2d800b398fdfd07d26e38682b255d8eac90e55c8e43795e14f786cd15e6976f47a508f32fe186b1ac728930456a9588b
|
data/lib/contextual_logger.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'active_support'
|
4
4
|
require 'json'
|
5
|
+
require_relative './contextual_logger/redactor'
|
5
6
|
require_relative './contextual_logger/context/handler'
|
6
7
|
|
7
8
|
module ContextualLogger
|
@@ -32,9 +33,20 @@ module ContextualLogger
|
|
32
33
|
end
|
33
34
|
end
|
34
35
|
end
|
36
|
+
|
37
|
+
def normalize_message(message)
|
38
|
+
case message
|
39
|
+
when String
|
40
|
+
message
|
41
|
+
else
|
42
|
+
message.inspect
|
43
|
+
end
|
44
|
+
end
|
35
45
|
end
|
36
46
|
|
37
47
|
module LoggerMixin
|
48
|
+
delegate :register_secret, to: :redactor
|
49
|
+
|
38
50
|
def global_context=(context)
|
39
51
|
Context::Handler.new(context).set!
|
40
52
|
end
|
@@ -59,27 +71,27 @@ module ContextualLogger
|
|
59
71
|
end
|
60
72
|
|
61
73
|
def debug(message = nil, context = {})
|
62
|
-
add(Logger::Severity::DEBUG, message
|
74
|
+
add(Logger::Severity::DEBUG, message.nil? && block_given? ? yield : message, **context)
|
63
75
|
end
|
64
76
|
|
65
77
|
def info(message = nil, context = {})
|
66
|
-
add(Logger::Severity::INFO, message
|
78
|
+
add(Logger::Severity::INFO, message.nil? && block_given? ? yield : message, **context)
|
67
79
|
end
|
68
80
|
|
69
81
|
def warn(message = nil, context = {})
|
70
|
-
add(Logger::Severity::WARN, message
|
82
|
+
add(Logger::Severity::WARN, message.nil? && block_given? ? yield : message, **context)
|
71
83
|
end
|
72
84
|
|
73
85
|
def error(message = nil, context = {})
|
74
|
-
add(Logger::Severity::ERROR, message
|
86
|
+
add(Logger::Severity::ERROR, message.nil? && block_given? ? yield : message, **context)
|
75
87
|
end
|
76
88
|
|
77
89
|
def fatal(message = nil, context = {})
|
78
|
-
add(Logger::Severity::FATAL, message
|
90
|
+
add(Logger::Severity::FATAL, message.nil? && block_given? ? yield : message, **context)
|
79
91
|
end
|
80
92
|
|
81
93
|
def unknown(message = nil, context = {})
|
82
|
-
add(Logger::Severity::UNKNOWN, message
|
94
|
+
add(Logger::Severity::UNKNOWN, message.nil? && block_given? ? yield : message, **context)
|
83
95
|
end
|
84
96
|
|
85
97
|
def log_level_enabled?(severity)
|
@@ -105,11 +117,19 @@ module ContextualLogger
|
|
105
117
|
end
|
106
118
|
|
107
119
|
def write_entry_to_log(severity, timestamp, progname, message, context:)
|
108
|
-
@logdev&.write(
|
120
|
+
@logdev&.write(
|
121
|
+
redactor.redact(
|
122
|
+
format_message(format_severity(severity), timestamp, progname, message, context: context)
|
123
|
+
)
|
124
|
+
)
|
109
125
|
end
|
110
126
|
|
111
127
|
private
|
112
128
|
|
129
|
+
def redactor
|
130
|
+
@redactor ||= Redactor.new
|
131
|
+
end
|
132
|
+
|
113
133
|
def format_message(severity, timestamp, progname, message, context: {})
|
114
134
|
message_hash = message_hash_with_context(severity, timestamp, progname, message, context: context)
|
115
135
|
|
@@ -123,7 +143,7 @@ module ContextualLogger
|
|
123
143
|
def message_hash_with_context(severity, timestamp, progname, message, context:)
|
124
144
|
message_hash =
|
125
145
|
{
|
126
|
-
message: message,
|
146
|
+
message: ContextualLogger.normalize_message(message),
|
127
147
|
severity: severity,
|
128
148
|
timestamp: timestamp
|
129
149
|
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ContextualLogger
|
4
|
+
class Redactor
|
5
|
+
attr_reader :redaction_set, :redaction_regex
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@redaction_set = Set.new
|
9
|
+
@redaction_regex = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def register_secret(sensitive_data)
|
13
|
+
if redaction_set.add?(Regexp.escape(sensitive_data))
|
14
|
+
@redaction_regex = Regexp.new(
|
15
|
+
redaction_set.to_a.join('|')
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def redact(log_line)
|
21
|
+
if redaction_regex
|
22
|
+
log_line.gsub(redaction_regex, '<redacted>')
|
23
|
+
else
|
24
|
+
log_line
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
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.
|
4
|
+
version: 0.6.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-
|
11
|
+
date: 2020-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -48,6 +48,8 @@ files:
|
|
48
48
|
- lib/contextual_logger/context/handler.rb
|
49
49
|
- lib/contextual_logger/logger_with_context.rb
|
50
50
|
- lib/contextual_logger/overrides/active_support/tagged_logging/formatter.rb
|
51
|
+
- lib/contextual_logger/redactor.rb
|
52
|
+
- lib/contextual_logger/version.rb
|
51
53
|
homepage: https://rubygems.org/gems/contextual_logger
|
52
54
|
licenses:
|
53
55
|
- MIT
|