usps-imis-api 0.15.1 → 0.15.2

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: '0281a50954f7068fa9ab74ce19ed5c533d358d101a983cffb7b729bbca8e4139'
4
- data.tar.gz: fb411c0c9204eb97b240dc2ca92a2c7348fa1a0ce43ff09011336b3a18716537
3
+ metadata.gz: 71bf86bea5de43c3a42aee00194fc56a1e0b42269e960e49508f8f2b1cc3e22f
4
+ data.tar.gz: d5721fd614d0da0f92d24e495d9cc4de8631af9d1609c9a5cca9eee6fc24a31b
5
5
  SHA512:
6
- metadata.gz: 9e7e886d137639e08132b6cd7f8e7734d375c330d3f6d28712b10ea8ff5b7362fae0d1525b24b0060987833203fdfb96492629f8e62e6487be17fa5bbc0051e4
7
- data.tar.gz: 1bd999a801fc341d93243b27eaebbf0fc7701737c227723a91c77d1fd76c48d73320c8949d5da1fb48107481539a429f708475847bc46bb49fdfa5da6f6bcdc6
6
+ metadata.gz: b414c11006fca75e300b1847474aab6319aaac3807eab7a025bb13d45c44d248a2b894b651affda14e7924341f6dea722bd2613d275cfeea908f9589cfa05535
7
+ data.tar.gz: b302e648c10ab09c427acfdc90fe9622b1fda6e03e6587ce8be1e7dc96c33b2c98cd293ea9191f6c78428193e55f395252cba5ee337e046a9716783264cfd24c
@@ -107,6 +107,14 @@ module Usps
107
107
  @global_logger = build_global_logger
108
108
  end
109
109
 
110
+ # Whether the global mirror debug logger writes anywhere. Disabled or unwritable, it is a null
111
+ # logger, and nothing needs to be mirrored to it.
112
+ #
113
+ def global_logging?
114
+ global_logger
115
+ @global_logging
116
+ end
117
+
110
118
  def silence!
111
119
  self.logger = Logger.new(nil)
112
120
  end
@@ -153,6 +161,7 @@ module Usps
153
161
  rescue StandardError
154
162
  false
155
163
  end
164
+ @global_logging = writable
156
165
  return ActiveSupport::TaggedLogging.new(::Logger.new(nil)) unless writable
157
166
 
158
167
  ActiveSupport::TaggedLogging.new(
@@ -12,14 +12,29 @@ module Usps
12
12
  self.formatter = LoggerFormatter.new
13
13
  end
14
14
 
15
- # Also send logger methods to the global logger
15
+ # Also send logger methods to the global logger, while it is writing anywhere
16
16
  #
17
17
  %w[debug info warn error fatal unknown].each do |method|
18
18
  define_method(method) do |message|
19
19
  super(message)
20
- Usps::Imis.config.global_logger.tagged(formatter.current_tags).public_send(method, message)
20
+ mirror(method, message) if Usps::Imis.config.global_logging?
21
21
  end
22
22
  end
23
+
24
+ # Whether a message at this level is recorded anywhere: here, or by the global logger, which
25
+ # records everything while it is writing
26
+ #
27
+ def logs?(level) = super || Usps::Imis.config.global_logging?
28
+
29
+ private
30
+
31
+ # The block form tags this one message, rather than building a tagged copy of the global logger
32
+ # for every line logged
33
+ #
34
+ def mirror(method, message)
35
+ global_logger = Usps::Imis.config.global_logger
36
+ global_logger.tagged(formatter.current_tags) { global_logger.public_send(method, message) }
37
+ end
23
38
  end
24
39
  end
25
40
  end
@@ -5,11 +5,22 @@ module Usps
5
5
  # Formatted logger helpers
6
6
  #
7
7
  module LoggerHelpers
8
+ # Whether a message at this level is recorded at all
9
+ #
10
+ def logs?(level) = public_send(:"#{level}?")
11
+
12
+ # Each line is logged on its own, so nothing is formatted or split for a level that would only
13
+ # discard them -- a full query page is tens of thousands of lines
14
+ #
8
15
  def multiline(string, level: :debug)
16
+ return unless logs?(level)
17
+
9
18
  string.split("\n").each { public_send(level, it) }
10
19
  end
11
20
 
12
21
  def json(data, level: :debug)
22
+ return unless logs?(level)
23
+
13
24
  hash = data.is_a?(String) ? JSON.parse(data) : data
14
25
  tagged('JSON') { multiline(JSON.pretty_generate(hash), level:) }
15
26
  rescue StandardError
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Usps
4
4
  module Imis
5
- VERSION = '0.15.1'
5
+ VERSION = '0.15.2'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usps-imis-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.1
4
+ version: 0.15.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Fiander