prefab-cloud-ruby 0.24.2 → 0.24.3

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: 0ba1dd85add1fd682905bb54cfa2ab75baa3f4b3bc1c31fe762d8389b10c8aea
4
- data.tar.gz: 4fb1d5bdc68d1dcd566afe681b02970288fbdcbbcf5c9706705c3d857b3422d4
3
+ metadata.gz: 29a3d9257f166fad534f81a44879cd82abc0cdd729714ab6feb2423d7b913a4d
4
+ data.tar.gz: b11f8e29260760dd64a78f26c016bd936fe0a5e75100329c645915bddd094ebc
5
5
  SHA512:
6
- metadata.gz: 0cbdd3e8d1c04b3f113ccbf9a6fdd8f46f3240f71db26d2feb86b18dfbf25237c1df24325aa90d433c20ef017138fd0f847d5599d27e746fc983dac680f1278c
7
- data.tar.gz: e09ed434ec40557b2ba8b684abdf2da3ae32103715e200162898b002031b9e175a401f9c435424b937d4929302f5dd7066813bdfd8d9fe1048fc6d74579815c9
6
+ metadata.gz: f74cda2cf6f657f72c15d118d9fb622d24d049261436691bff28e42ad5656beb53ec192e148e30e0f025a5becb094682fc68f4860c2cf5b3ed351b7954e3b587
7
+ data.tar.gz: 90125b61cd874c12376eecc726aa2fef0d6158565150830f95f642f97fad849b53570238593ce617dc39b05960abb47d4c2e6cd4a974e30c69fc40ec2720958b
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.24.2
1
+ 0.24.3
@@ -53,8 +53,9 @@ module Prefab
53
53
 
54
54
  return true if @logdev.nil? || severity < level_of(path) || @silences[local_log_id]
55
55
 
56
- progname = "#{path}: #{progname || @progname}"
57
-
56
+ if progname.nil?
57
+ progname = @progname
58
+ end
58
59
  if message.nil?
59
60
  if block_given?
60
61
  message = yield
@@ -65,7 +66,7 @@ module Prefab
65
66
  end
66
67
 
67
68
  @logdev.write(
68
- format_message(format_severity(severity), Time.now, progname, message)
69
+ format_message(format_severity(severity), Time.now, progname, message, path)
69
70
  )
70
71
  true
71
72
  end
@@ -169,6 +170,20 @@ module Prefab
169
170
  path.slice! SEP
170
171
  path
171
172
  end
173
+
174
+ def format_message(severity, datetime, progname, msg, path)
175
+ formatter = (@formatter || @default_formatter)
176
+
177
+ if formatter.arity == 5
178
+ formatter.call(severity, datetime, progname, msg, path)
179
+ else
180
+ formatter.call(severity, datetime, join_path_and_progname(path, progname), msg)
181
+ end
182
+ end
183
+
184
+ def join_path_and_progname(path, progname)
185
+ (progname.nil? || progname.empty?) ? path : "#{progname}: #{path}"
186
+ end
172
187
  end
173
188
 
174
189
  # StubConfigClient to be used while config client initializes
@@ -21,6 +21,15 @@ module Prefab
21
21
  DEFAULT_LOG_FORMATTER = proc { |severity, datetime, progname, msg|
22
22
  "#{severity.ljust(5)} #{datetime}:#{' ' if progname}#{progname} #{msg}\n"
23
23
  }
24
+ JSON_LOG_FORMATTER = proc { |severity, datetime, progname, msg, path|
25
+ {
26
+ type: severity,
27
+ time: datetime,
28
+ progname: progname,
29
+ message: msg,
30
+ path: path
31
+ }.compact.to_json << "\n"
32
+ }
24
33
 
25
34
  module ON_INITIALIZATION_FAILURE
26
35
  RAISE = 1
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: prefab-cloud-ruby 0.24.2 ruby lib
5
+ # stub: prefab-cloud-ruby 0.24.3 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "prefab-cloud-ruby".freeze
9
- s.version = "0.24.2"
9
+ s.version = "0.24.3"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Jeff Dwyer".freeze]
14
- s.date = "2023-05-12"
14
+ s.date = "2023-05-15"
15
15
  s.description = "Feature Flags, Live Config, and Dynamic Log Levels as a service".freeze
16
16
  s.email = "jdwyer@prefab.cloud".freeze
17
17
  s.extra_rdoc_files = [
data/test/test_logger.rb CHANGED
@@ -85,46 +85,47 @@ class TestLogger < Minitest::Test
85
85
  end
86
86
 
87
87
  def test_log_internal
88
- logger, mock_logdev = mock_logger_expecting(/W, \[.*\] WARN -- cloud.prefab.client.test.path: : test message/)
89
- logger.log_internal('test message', 'test.path', '', ::Logger::WARN)
90
- mock_logdev.verify
88
+ prefab, io = captured_logger
89
+ prefab.log.log_internal('test message', 'test.path', '', ::Logger::WARN)
90
+ assert_logged io, 'WARN', "cloud.prefab.client.test.path", "test message"
91
91
  end
92
92
 
93
93
  def test_log_internal_unknown
94
- logger, mock_logdev = mock_logger_expecting(/A, \[.*\] ANY -- cloud.prefab.client.test.path: : test message/)
95
- logger.log_internal('test message', 'test.path', '', ::Logger::UNKNOWN)
96
- mock_logdev.verify
94
+ prefab, io = captured_logger
95
+ prefab.log.log_internal('test message', 'test.path', '', ::Logger::UNKNOWN)
96
+ assert_logged io, 'ANY', "cloud.prefab.client.test.path", "test message"
97
97
  end
98
98
 
99
99
  def test_log_internal_silencing
100
- logger, mock_logdev = mock_logger_expecting(/W, \[.*\] WARN -- cloud.prefab.client.test.path: : should log/,
101
- calls: 2)
102
- logger.silence do
103
- logger.log_internal('should not log', 'test.path', '', ::Logger::WARN)
100
+ prefab, io = captured_logger
101
+ prefab.log.silence do
102
+ prefab.log.log_internal('should not log', 'test.path', '', ::Logger::WARN)
104
103
  end
105
- logger.log_internal('should log', 'test.path', '', ::Logger::WARN)
106
- mock_logdev.verify
104
+ prefab.log.log_internal('should log', 'test.path', '', ::Logger::WARN)
105
+ assert_logged io, 'WARN', "cloud.prefab.client.test.path", "should log"
106
+ refute_logged io, 'should not log'
107
107
  end
108
108
 
109
109
  def test_log
110
- logger, mock_logdev = mock_logger_expecting(/W, \[.*\] WARN -- test.path: : test message/)
111
- logger.log('test message', 'test.path', '', ::Logger::WARN)
112
- mock_logdev.verify
110
+ prefab, io = captured_logger
111
+ prefab.log.log('test message', 'test.path', '', ::Logger::WARN)
112
+ assert_logged io, 'WARN', "test.path", "test message"
113
113
  end
114
114
 
115
115
  def test_log_unknown
116
- logger, mock_logdev = mock_logger_expecting(/A, \[.*\] ANY -- test.path: : test message/)
117
- logger.log('test message', 'test.path', '', ::Logger::UNKNOWN)
118
- mock_logdev.verify
116
+ prefab, io = captured_logger
117
+ prefab.log.log('test message', 'test.path', '', ::Logger::UNKNOWN)
118
+ assert_logged io, 'ANY', "test.path", "test message"
119
119
  end
120
120
 
121
121
  def test_log_silencing
122
- logger, mock_logdev = mock_logger_expecting(/W, \[.*\] WARN -- test.path: : should log/, calls: 2)
123
- logger.silence do
124
- logger.log('should not log', 'test.path', '', ::Logger::WARN)
122
+ prefab, io = captured_logger
123
+ prefab.log.silence do
124
+ prefab.log.log('should not log', 'test.path', '', ::Logger::WARN)
125
125
  end
126
- logger.log('should log', 'test.path', '', ::Logger::WARN)
127
- mock_logdev.verify
126
+ prefab.log.log('should log', 'test.path', '', ::Logger::WARN)
127
+ assert_logged io, 'WARN', "test.path", "should log"
128
+ refute_logged io, 'should not log'
128
129
  end
129
130
 
130
131
  def test_logging_with_prefix
@@ -163,7 +164,7 @@ class TestLogger < Minitest::Test
163
164
  prefab.log.progname = 'MY_PROGNAME'
164
165
  prefab.log.error message
165
166
 
166
- assert_logged io, 'ERROR', 'MY_PROGNAME test.test_logger.test_logging_with_a_progname', message
167
+ assert_logged io, 'ERROR', 'MY_PROGNAME: test.test_logger.test_logging_with_a_progname', message
167
168
  end
168
169
 
169
170
  def test_logging_with_a_progname_and_no_message
@@ -172,7 +173,7 @@ class TestLogger < Minitest::Test
172
173
  prefab.log.progname = 'MY_PROGNAME'
173
174
  prefab.log.error
174
175
 
175
- assert_logged io, 'ERROR', 'MY_PROGNAME test.test_logger.test_logging_with_a_progname_and_no_message', 'MY_PROGNAME'
176
+ assert_logged io, 'ERROR', 'MY_PROGNAME: test.test_logger.test_logging_with_a_progname_and_no_message', 'MY_PROGNAME'
176
177
  end
177
178
 
178
179
  def test_logging_with_criteria_on_top_level_key
@@ -399,35 +400,19 @@ class TestLogger < Minitest::Test
399
400
  raise 'THIS WILL NEVER BE EVALUATED'
400
401
  end
401
402
 
402
- assert_logged io, 'ERROR', 'test.test_logger.test_logging_with_a_block', ' ' + message
403
+ assert_logged io, 'ERROR', 'test.test_logger.test_logging_with_a_block', message
403
404
  end
404
405
 
405
406
  private
406
407
 
407
408
  def assert_logged(logged_io, level, path, message)
408
- assert_match(/#{level}\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [-+]?\d+:\s+#{path}: #{message}\n/, logged_io.string)
409
+ assert_match(/#{level}\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} [-+]?\d+:\s+#{path} #{message}\n/, logged_io.string)
409
410
  end
410
411
 
411
412
  def refute_logged(logged_io, message)
412
413
  refute_match(/#{message}/, logged_io.string)
413
414
  end
414
415
 
415
- def mock_logger_expecting(pattern, configs = {}, calls: 1)
416
- mock_logdev = Minitest::Mock.new
417
- mock_logdev.expect :write, nil do |arg|
418
- pattern.match(arg)
419
- end
420
-
421
- calls.times.each do
422
- mock_logdev.expect(:nil?, false)
423
- end
424
-
425
- logger = Prefab::LoggerClient.new($stdout)
426
- logger.instance_variable_set('@logdev', mock_logdev)
427
- logger.set_config_client(MockConfigClient.new(configs))
428
- [logger, mock_logdev]
429
- end
430
-
431
416
  def captured_logger(options = {})
432
417
  io = StringIO.new
433
418
  options = Prefab::Options.new(**options.merge(
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prefab-cloud-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.24.2
4
+ version: 0.24.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Dwyer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-12 00:00:00.000000000 Z
11
+ date: 2023-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby