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 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