debug_logging 3.1.9 → 4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +174 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/LICENSE.txt +1 -1
- data/README.md +89 -47
- data/SECURITY.md +2 -2
- data/lib/debug_logging/active_support_notifications.rb +0 -2
- data/lib/debug_logging/argument_printer.rb +25 -19
- data/lib/debug_logging/class_logger.rb +1 -3
- data/lib/debug_logging/class_notifier.rb +11 -15
- data/lib/debug_logging/configuration.rb +27 -20
- data/lib/debug_logging/constants.rb +11 -9
- data/lib/debug_logging/finalize.rb +0 -2
- data/lib/debug_logging/hooks.rb +12 -16
- data/lib/debug_logging/instance_logger.rb +45 -19
- data/lib/debug_logging/instance_logger_modulizer.rb +55 -51
- data/lib/debug_logging/instance_notifier.rb +18 -18
- data/lib/debug_logging/instance_notifier_modulizer.rb +35 -41
- data/lib/debug_logging/log_subscriber.rb +2 -4
- data/lib/debug_logging/util.rb +17 -0
- data/lib/debug_logging/version.rb +1 -3
- data/lib/debug_logging.rb +45 -22
- data/lib/simple_debug_logging.rb +2 -4
- data.tar.gz.sig +0 -0
- metadata +14 -29
- metadata.gz.sig +0 -0
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require "active_support"
|
4
2
|
require "active_support/log_subscriber"
|
5
3
|
|
@@ -34,8 +32,8 @@ module DebugLogging
|
|
34
32
|
{
|
35
33
|
name: event.name,
|
36
34
|
duration: Rational(event.duration, 1000).to_f,
|
37
|
-
time:
|
38
|
-
end:
|
35
|
+
time: debug_event_time_to_s(event.time),
|
36
|
+
end: debug_event_time_to_s(event.end),
|
39
37
|
args: debug_signature_to_s(args: args, config_proxy: config_proxy),
|
40
38
|
payload: debug_payload_to_s(payload: payload, config_proxy: config_proxy),
|
41
39
|
}
|
data/lib/debug_logging/util.rb
CHANGED
@@ -2,6 +2,20 @@ module DebugLogging
|
|
2
2
|
module Util
|
3
3
|
module_function
|
4
4
|
|
5
|
+
def debug_time(time_or_monotonic)
|
6
|
+
case time_or_monotonic
|
7
|
+
when Time, DateTime
|
8
|
+
time_or_monotonic
|
9
|
+
when Numeric
|
10
|
+
Time.at(time_or_monotonic)
|
11
|
+
when String
|
12
|
+
Time.parse(time_or_monotonic)
|
13
|
+
else
|
14
|
+
# Garbage in, Sweet Nourishing Gruel Out
|
15
|
+
Time.now
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
5
19
|
# methods_to_log may be an array of a single method name, followed by config options and payload,
|
6
20
|
# or it could be an array of method names followed by config options and payload to be shared by the whole set.
|
7
21
|
def extract_payload_and_config(method_names:, payload: nil, config: nil)
|
@@ -14,6 +28,7 @@ module DebugLogging
|
|
14
28
|
scoped_payload
|
15
29
|
end
|
16
30
|
config_opts = config&.clone(freeze: false) || {}
|
31
|
+
# puts "[EPAC] config: #{config}, scoped_payload: #{scoped_payload}, payload: #{payload}, config_opts: #{config_opts}"
|
17
32
|
unless payload.empty?
|
18
33
|
DebugLogging::Configuration::CONFIG_KEYS.each { |k| config_opts[k] = payload.delete(k) if payload.key?(k) }
|
19
34
|
end
|
@@ -35,6 +50,8 @@ module DebugLogging
|
|
35
50
|
# logged :meth1, :meth2, :meth3 without options is valid
|
36
51
|
method_names
|
37
52
|
end
|
53
|
+
else
|
54
|
+
raise ArgumentError, "unknown type for method_names: #{method_names.class}"
|
38
55
|
end
|
39
56
|
[method_names, payload, config_opts]
|
40
57
|
end
|
data/lib/debug_logging.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
# Std Lib
|
4
2
|
require "logger"
|
5
3
|
require "digest"
|
@@ -44,7 +42,8 @@ require "debug_logging/class_logger"
|
|
44
42
|
#
|
45
43
|
# # For instance methods:
|
46
44
|
# # Option 1: specify the exact method(s) to add logging to
|
47
|
-
#
|
45
|
+
# extend DebugLogging::InstanceLogger
|
46
|
+
# i_logged [:drive, :stop]
|
48
47
|
#
|
49
48
|
# # Provides the `logged` method decorator
|
50
49
|
# extend DebugLogging::ClassLogger
|
@@ -59,7 +58,8 @@ require "debug_logging/class_logger"
|
|
59
58
|
#
|
60
59
|
# # For instance methods:
|
61
60
|
# # Option 2: add logging to all instance methods defined above (but *not* defined below)
|
62
|
-
#
|
61
|
+
# extend DebugLogging::InstanceLogger
|
62
|
+
# i_logged instance_methods(false)
|
63
63
|
#
|
64
64
|
# def will_not_be_logged; false; end
|
65
65
|
#
|
@@ -68,29 +68,36 @@ require "debug_logging/class_logger"
|
|
68
68
|
####################
|
69
69
|
|
70
70
|
module DebugLogging
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
base
|
77
|
-
|
78
|
-
|
71
|
+
# We can't compare with nil to check for no arguments passed as a configuration value,
|
72
|
+
# because nil can be an argument passed, hence:
|
73
|
+
ACTUAL_NOTHING = Object.new
|
74
|
+
|
75
|
+
class << self
|
76
|
+
def extended(base)
|
77
|
+
base.send(:extend, ArgumentPrinter)
|
78
|
+
base.send(:include, ArgumentPrinter)
|
79
|
+
base.send(:extend, ApiClassMethods)
|
80
|
+
base.send(:extend, ConfigClassMethods)
|
81
|
+
base.debug_config_reset(Configuration.new(**debug_logging_configuration.to_hash))
|
82
|
+
base.class_eval do
|
83
|
+
def base.inherited(subclass)
|
84
|
+
subclass.debug_config_reset(Configuration.new(**debug_config.to_hash))
|
85
|
+
end
|
79
86
|
end
|
80
87
|
end
|
81
|
-
end
|
82
88
|
|
83
|
-
|
89
|
+
#### API ####
|
84
90
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
91
|
+
# For single statement global config in an initializer
|
92
|
+
# e.g. DebugLogging.configuration.ellipsis = "..."
|
93
|
+
def configuration
|
94
|
+
self.debug_logging_configuration ||= Configuration.new
|
95
|
+
end
|
90
96
|
|
91
|
-
|
92
|
-
|
93
|
-
|
97
|
+
# For global config in an initializer with a block
|
98
|
+
def configure
|
99
|
+
yield(configuration)
|
100
|
+
end
|
94
101
|
end
|
95
102
|
|
96
103
|
module ApiClassMethods
|
@@ -226,6 +233,22 @@ module DebugLogging
|
|
226
233
|
@debug_logging_configuration.colorized_chain_for_class = colorized_chain_for_class
|
227
234
|
end
|
228
235
|
|
236
|
+
def debug_add_timestamp
|
237
|
+
@debug_logging_configuration.add_timestamp
|
238
|
+
end
|
239
|
+
|
240
|
+
def debug_add_timestamp=(add_timestamp)
|
241
|
+
@debug_logging_configuration.add_timestamp = add_timestamp
|
242
|
+
end
|
243
|
+
|
244
|
+
def debug_time_formatter_proc
|
245
|
+
@debug_logging_configuration.time_formatter_proc
|
246
|
+
end
|
247
|
+
|
248
|
+
def debug_time_formatter_proc=(time_formatter_proc)
|
249
|
+
@debug_logging_configuration.time_formatter_proc = time_formatter_proc
|
250
|
+
end
|
251
|
+
|
229
252
|
def debug_add_invocation_id
|
230
253
|
@debug_logging_configuration.add_invocation_id
|
231
254
|
end
|
data/lib/simple_debug_logging.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
# Simpler version of what the sibling DebugLogging library does. Included as a bauble.
|
4
2
|
#
|
5
3
|
############# THIS IS A BAUBLE
|
@@ -57,11 +55,11 @@ class SimpleDebugLogging < Module
|
|
57
55
|
define_method(method_to_log.to_sym) do |*args|
|
58
56
|
method_return_value = nil
|
59
57
|
invocation_id = " ~#{args.object_id}@#{Time.now.to_i}~" if args
|
60
|
-
puts "#{self}
|
58
|
+
puts "#{self}::#{method_to_log}(#{args.map(&:inspect).join(", ")})#{invocation_id}"
|
61
59
|
elapsed = Benchmark.realtime do
|
62
60
|
method_return_value = original_method.call(*args)
|
63
61
|
end
|
64
|
-
puts "#{self}
|
62
|
+
puts "#{self}::#{method_to_log} ~#{args.hash}~ complete in #{elapsed}s#{invocation_id}"
|
65
63
|
method_return_value
|
66
64
|
end
|
67
65
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: debug_logging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
8
|
-
-
|
8
|
+
- John Gillson
|
9
9
|
- guckin
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
@@ -38,7 +38,7 @@ cert_chain:
|
|
38
38
|
KuxrfYrN+9HvMdm+nZ6TypmKftHY3Gj+/uu+g8Icm/zrvTWAEE0mcJOkfrIoNPJb
|
39
39
|
pF8dMA==
|
40
40
|
-----END CERTIFICATE-----
|
41
|
-
date:
|
41
|
+
date: 2024-03-01 00:00:00.000000000 Z
|
42
42
|
dependencies:
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: colorize
|
@@ -68,20 +68,6 @@ dependencies:
|
|
68
68
|
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: 5.2.4.4
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: byebug
|
73
|
-
requirement: !ruby/object:Gem::Requirement
|
74
|
-
requirements:
|
75
|
-
- - ">="
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '11'
|
78
|
-
type: :development
|
79
|
-
prerelease: false
|
80
|
-
version_requirements: !ruby/object:Gem::Requirement
|
81
|
-
requirements:
|
82
|
-
- - ">="
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: '11'
|
85
71
|
- !ruby/object:Gem::Dependency
|
86
72
|
name: rake
|
87
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,20 +156,20 @@ dependencies:
|
|
170
156
|
requirements:
|
171
157
|
- - "~>"
|
172
158
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
159
|
+
version: '22.1'
|
174
160
|
- - ">="
|
175
161
|
- !ruby/object:Gem::Version
|
176
|
-
version:
|
162
|
+
version: 22.1.3
|
177
163
|
type: :development
|
178
164
|
prerelease: false
|
179
165
|
version_requirements: !ruby/object:Gem::Requirement
|
180
166
|
requirements:
|
181
167
|
- - "~>"
|
182
168
|
- !ruby/object:Gem::Version
|
183
|
-
version: '
|
169
|
+
version: '22.1'
|
184
170
|
- - ">="
|
185
171
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
172
|
+
version: 22.1.3
|
187
173
|
- !ruby/object:Gem::Dependency
|
188
174
|
name: rubocop-packaging
|
189
175
|
requirement: !ruby/object:Gem::Requirement
|
@@ -304,6 +290,8 @@ executables: []
|
|
304
290
|
extensions: []
|
305
291
|
extra_rdoc_files: []
|
306
292
|
files:
|
293
|
+
- CHANGELOG.md
|
294
|
+
- CODE_OF_CONDUCT.md
|
307
295
|
- CONTRIBUTING.md
|
308
296
|
- LICENSE.txt
|
309
297
|
- README.md
|
@@ -331,10 +319,10 @@ licenses:
|
|
331
319
|
- MIT
|
332
320
|
metadata:
|
333
321
|
homepage_uri: https://github.com/pboling/debug_logging
|
334
|
-
source_code_uri: https://github.com/pboling/debug_logging/tree/
|
335
|
-
changelog_uri: https://github.com/pboling/debug_logging/blob/
|
322
|
+
source_code_uri: https://github.com/pboling/debug_logging/tree/v4.0.1
|
323
|
+
changelog_uri: https://github.com/pboling/debug_logging/blob/v4.0.1/CHANGELOG.md
|
336
324
|
bug_tracker_uri: https://github.com/pboling/debug_logging/issues
|
337
|
-
documentation_uri: https://www.rubydoc.info/gems/debug_logging/
|
325
|
+
documentation_uri: https://www.rubydoc.info/gems/debug_logging/4.0.1
|
338
326
|
wiki_uri: https://github.com/pboling/debug_logging/wiki
|
339
327
|
funding_uri: https://liberapay.com/pboling
|
340
328
|
rubygems_mfa_required: 'true'
|
@@ -346,17 +334,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
346
334
|
requirements:
|
347
335
|
- - ">="
|
348
336
|
- !ruby/object:Gem::Version
|
349
|
-
version: '
|
350
|
-
- - "<"
|
351
|
-
- !ruby/object:Gem::Version
|
352
|
-
version: '3'
|
337
|
+
version: '3.1'
|
353
338
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
354
339
|
requirements:
|
355
340
|
- - ">="
|
356
341
|
- !ruby/object:Gem::Version
|
357
342
|
version: '0'
|
358
343
|
requirements: []
|
359
|
-
rubygems_version: 3.
|
344
|
+
rubygems_version: 3.5.6
|
360
345
|
signing_key:
|
361
346
|
specification_version: 4
|
362
347
|
summary: Drop-in debug logging useful when a call stack gets unruly
|
metadata.gz.sig
CHANGED
Binary file
|