contextual_logger 0.5.1 → 0.6.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
  SHA1:
3
- metadata.gz: 0e2c38b3b8a3f6b71ba8ec88f823064a163a942b
4
- data.tar.gz: 023cbad6c4da242b80590a3f33ba42b4c5bd0e69
3
+ metadata.gz: '0118241ab98c2c3ec5f47741cc2e173a22bd4c13'
4
+ data.tar.gz: 3370e95855bc8c7076581ea19564af108b0e9e1d
5
5
  SHA512:
6
- metadata.gz: 45400f8d40a634bdb89cc5e60801853bf584ef07e8237d176a9561ad3cbfc81a1682d122fd1130e453de183bc5f9f0932cb601685315d97681964a47cf6e053c
7
- data.tar.gz: fc778151d8728552bc57da6e41fef37efc571b94e0ac7e6be2aec0f871db88c2106f70fd7206a215114e25407d649d63742c9a979da9b69bed4455fea9be9715
6
+ metadata.gz: 54580c2fc2920f81203dba48b911be2034e93892d6cab427b93557c54e9f227e09f7ad6c04ec6bd74cd9d758fbf3a72acd7923f63cfb5c5cd264d60e92d5ef0c
7
+ data.tar.gz: dbde45342044cfba8a7c98e15febf3fc2d800b398fdfd07d26e38682b255d8eac90e55c8e43795e14f786cd15e6976f47a508f32fe186b1ac728930456a9588b
@@ -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 || yield, **context)
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 || yield, **context)
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 || yield, **context)
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 || yield, **context)
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 || yield, **context)
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 || yield, **context)
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(format_message(format_severity(severity), timestamp, progname, message, context: context))
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
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ContextualLogger
4
+ VERSION = '0.6.0'
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.5.1
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-03-10 00:00:00.000000000 Z
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