debug_logging 0.1.0 → 1.0.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: a2354763d5bcb6438947c4e268683c956477b812
4
- data.tar.gz: 2c0c20aff357b165857f6c7794bb54e87e2b7ac3
3
+ metadata.gz: 74f20737ddaf59151ab3118f196f2d811cfe4687
4
+ data.tar.gz: 21a1c19d58110b20436788e74f94c2c5fdc62c10
5
5
  SHA512:
6
- metadata.gz: b6312e56ce69f08fa23d1e57c24b7e10354e4f971304b6dbed74d3232cb2593d1ccff250f0e5eebc51e24edf80c60c646c8f636cdf135a7d8d1967289903334d
7
- data.tar.gz: 987ea132ee891882e14a1bee41bbe47084700468767588e21eaa2a487098178613b36592d0f69e17c55fdfcad9bd1a175a0613bea9b5064bf028212fd53ab6a2
6
+ metadata.gz: 7ebb58f828a34bfa2be6c31228c977dd08e796070c2af386781efaf434d5453b7d333552908f47f8e3df5fe6a2a56148499f14d364c203cf1210309f54fa7378
7
+ data.tar.gz: ee69b5dab10dbb4a5a076bd62ee0d3540747201d41e7bbf22b5b71d11321c2db5dce2bbb44cbc2afb08bd2bb93a5928a24cfce9e4872d49942c327f1907b77a3
data/.byebug_history ADDED
@@ -0,0 +1,4 @@
1
+ exit
2
+ @debug_logging_configuration
3
+ debug_logging_configuration
4
+ debug_class_benchmarks
data/README.md CHANGED
@@ -41,45 +41,75 @@ Crack open the specs for usage examples.
41
41
  ### Without Rails
42
42
 
43
43
  It just works. ;)
44
- Configuration can go anywhere you want.
44
+ Configuration can go anywhere you want. It will look like the Rails config though; see below.
45
45
 
46
46
  ### With Rails
47
47
 
48
48
  Recommend creating `config/initializers/debug_logging.rb` with:
49
+
49
50
  ```ruby
50
51
  # Showing the defaults
51
- DebugLogging.logger = Logger.new(STDOUT) # you probably want to override to be the Rails.logger
52
- DebugLogging.log_level = :debug # at what level do the messages created by this gem sent at?
53
- DebugLogging.last_hash_to_s_proc = nil # e.g. ->(hash) { "#{hash.keys}" }
54
- DebugLogging.last_hash_max_length = 1_000
55
- DebugLogging.args_max_length = 1_000
56
- DebugLogging.instance_benchmarks = false
57
- DebugLogging.class_benchmarks = false
58
- DebugLogging.add_invocation_id = true # invocation id allows you to identify a method call uniquely in a log
59
- DebugLogging.ellipsis = " ✂️ …".freeze
52
+ DebugLogging.configuration.logger = Logger.new(STDOUT) # you probably want to override to be the Rails.logger
53
+ DebugLogging.configuration.log_level = :debug # at what level do the messages created by this gem sent at?
54
+ DebugLogging.configuration.last_hash_to_s_proc = nil # e.g. ->(hash) { "keys: #{hash.keys}" }
55
+ DebugLogging.configuration.last_hash_max_length = 1_000
56
+ DebugLogging.configuration.args_max_length = 1_000
57
+ DebugLogging.configuration.instance_benchmarks = false
58
+ DebugLogging.configuration.class_benchmarks = false
59
+ DebugLogging.configuration.add_invocation_id = true # invocation id allows you to identify a method call uniquely in a log
60
+ DebugLogging.configuration.ellipsis = " ✂️ …".freeze
61
+ ```
62
+
63
+ If you prefer to use the block style:
64
+
65
+ ```ruby
66
+ DebugLogging.configure do |config|
67
+ config.logger = Logger.new(STDOUT) # probably want to override to be the Rails.logger
68
+ config.log_level = :debug # at what level do the messages created by this gem sent at?
69
+ config.last_hash_to_s_proc = nil # e.g. ->(hash) { "keys: #{hash.keys}" }
70
+ config.last_hash_max_length = 1_000
71
+ config.args_max_length = 1_000
72
+ config.instance_benchmarks = false
73
+ config.class_benchmarks = false
74
+ config.add_invocation_id = true # invocation id allows you to identify a method call uniquely in a log
75
+ config.ellipsis = " ✂️ …".freeze
76
+ end
60
77
  ```
61
78
 
79
+ **All** of the above **config** is **inheritable** and **configurable** at the **per-class** level as well!
80
+ Just prepend `debug_` to any config value you want to override in a class.
81
+
82
+ Every time a method is called, get logs, optionally with arguments, a benchmarck, and a unique invocation identifier:
83
+
62
84
  ```ruby
63
85
  class Car
64
86
 
87
+ # adds the helper methods to the class, all are prefixed with debug_*,
88
+ # except for the logged class method, which comes from extending DebugLogging::ClassLogger
89
+ extend DebugLogging
90
+
91
+ # per class configuration overrides!
92
+ self.debug_class_benchmarks = true
93
+ self.debug_instance_benchmarks = true
94
+
65
95
  # For instance methods:
66
96
  # Option 1: specify the exact method(s) to add logging to
67
97
  include DebugLogging::InstanceLogger.new(i_methods: [:drive, :stop])
68
-
98
+
69
99
  extend DebugLogging::ClassLogger
70
-
71
- logged def self.make; new; end
72
- def self.design(*args); new; end
73
- def self.safety(*args); new; end
100
+
101
+ logged def debug_make; new; end
102
+ def design(*args); new; end
103
+ def safety(*args); new; end
74
104
  logged :design, :safety
75
-
105
+
76
106
  def drive(speed); speed; end
77
107
  def stop; 0; end
78
-
108
+
79
109
  # For instance methods:
80
110
  # Option 2: add logging to all instance methods defined above (but *not* defined below)
81
- include DebugLogging::InstanceLogger.new(i_methods: self.instance_methods(false))
82
-
111
+ include DebugLogging::InstanceLogger.new(i_methods: debug_instance_methods(false))
112
+
83
113
  def will_not_be_logged; false; end
84
114
 
85
115
  end
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib"]
22
22
 
23
23
  spec.add_development_dependency "rspec-pending_for"
24
+ spec.add_development_dependency "byebug", "~> 9.0"
24
25
  spec.add_development_dependency "bundler", "~> 1.14"
25
26
  spec.add_development_dependency "rake", "~> 10.0"
26
27
  spec.add_development_dependency "rspec", "~> 3.0"
@@ -1,28 +1,27 @@
1
1
  module DebugLogging
2
2
  module ArgumentPrinter
3
- def self.to_s(args)
4
- length = 0
5
- if DebugLogging.last_hash_to_s_proc && args[-1].is_a?(Hash)
3
+ def debug_arguments_to_s(args)
4
+ if debug_last_hash_to_s_proc && args[-1].is_a?(Hash)
6
5
  if args.length > 1
7
6
  add_args_ellipsis = false
8
7
  add_last_hash_ellipsis = false
9
- printed_args = args[0..(-2)].map {|x| x.inspect}.join(", ").tap {|x| add_args_ellipsis = x.length > DebugLogging.args_max_length}[0..(DebugLogging.args_max_length)]
10
- printed_args << DebugLogging.ellipsis if add_args_ellipsis
11
- printed_args << ", " << DebugLogging.last_hash_to_s_proc.call(args[-1]).tap {|x| add_last_hash_ellipsis = x.length > DebugLogging.last_hash_max_length}[0..(DebugLogging.last_hash_max_length)]
12
- printed_args << DebugLogging.ellipsis if add_last_hash_ellipsis
8
+ printed_args = args[0..(-2)].map {|x| x.inspect}.join(", ").tap {|x| add_args_ellipsis = x.length > debug_args_max_length}[0..(debug_args_max_length)]
9
+ printed_args << debug_ellipsis if add_args_ellipsis
10
+ printed_args << ", " << debug_last_hash_to_s_proc.call(args[-1]).tap {|x| add_last_hash_ellipsis = x.length > debug_last_hash_max_length}[0..(debug_last_hash_max_length)]
11
+ printed_args << debug_ellipsis if add_last_hash_ellipsis
13
12
  else
14
- printed_args = DebugLogging.last_hash_to_s_proc.call(args[0]).tap {|x| add_last_hash_ellipsis = x.length > DebugLogging.last_hash_max_length}[0..(DebugLogging.last_hash_max_length)]
15
- printed_args << DebugLogging.ellipsis if add_last_hash_ellipsis
13
+ printed_args = debug_last_hash_to_s_proc.call(args[0]).tap {|x| add_last_hash_ellipsis = x.length > debug_last_hash_max_length}[0..(debug_last_hash_max_length)]
14
+ printed_args << debug_ellipsis if add_last_hash_ellipsis
16
15
  end
17
16
  else
18
17
  add_args_ellipsis = false
19
18
  if args.length == 1 && args[0].is_a?(Hash)
20
19
  # handle double splat
21
- printed_args = ("**" << args.map {|x| x.inspect}.join(", ").tap {|x| add_args_ellipsis = x.length > DebugLogging.args_max_length})[0..(DebugLogging.args_max_length)]
20
+ printed_args = ("**" << args.map {|x| x.inspect}.join(", ").tap {|x| add_args_ellipsis = x.length > debug_args_max_length})[0..(debug_args_max_length)]
22
21
  else
23
- printed_args = args.map {|x| x.inspect}.join(", ").tap {|x| add_args_ellipsis = x.length > DebugLogging.args_max_length}[0..(DebugLogging.args_max_length)]
22
+ printed_args = args.map {|x| x.inspect}.join(", ").tap {|x| add_args_ellipsis = x.length > debug_args_max_length}[0..(debug_args_max_length)]
24
23
  end
25
- printed_args << DebugLogging.ellipsis if add_args_ellipsis
24
+ printed_args << debug_ellipsis if add_args_ellipsis
26
25
  end
27
26
  "(#{printed_args})"
28
27
  end
@@ -2,18 +2,19 @@ module DebugLogging
2
2
  module ClassLogger
3
3
  def logged(*methods_to_log)
4
4
  methods_to_log.each do |method_to_log|
5
- # method name will always be a symbol
5
+ # method name must be a symbol
6
+ method_to_log = method_to_log.to_sym
6
7
  original_method = method(method_to_log)
7
8
  (class << self; self; end).class_eval do
8
9
  define_method(method_to_log) do |*args|
9
10
  method_return_value = nil
10
- invocation_id = " ~#{args.object_id}@#{Time.now.to_i}~" if DebugLogging.add_invocation_id && args
11
- DebugLogging.log "#{self}.#{method_to_log}#{ArgumentPrinter.to_s(args)}#{invocation_id}"
12
- if DebugLogging.class_benchmarks
11
+ invocation_id = " ~#{args.object_id}@#{Time.now.to_i}~" if debug_add_invocation_id
12
+ debug_log "#{self}.#{method_to_log}#{debug_arguments_to_s(args)}#{invocation_id}"
13
+ if debug_class_benchmarks
13
14
  elapsed = Benchmark.realtime do
14
15
  method_return_value = original_method.call(*args)
15
16
  end
16
- DebugLogging.log "#{self}.#{method_to_log} completed in #{sprintf("%f", elapsed)}s#{invocation_id}"
17
+ debug_log "#{self}.#{method_to_log} completed in #{sprintf("%f", elapsed)}s#{invocation_id}"
17
18
  else
18
19
  method_return_value = original_method.call(*args)
19
20
  end
@@ -0,0 +1,32 @@
1
+ module DebugLogging
2
+ class Configuration
3
+ attr_accessor :logger
4
+ attr_accessor :log_level
5
+ attr_accessor :last_hash_to_s_proc
6
+ attr_accessor :last_hash_max_length
7
+ attr_accessor :args_max_length
8
+ attr_accessor :instance_benchmarks
9
+ attr_accessor :class_benchmarks
10
+ attr_accessor :add_invocation_id
11
+ attr_accessor :ellipsis
12
+ def initialize
13
+ @logger = Logger.new(STDOUT)
14
+ @log_level = :debug
15
+ @last_hash_to_s_proc = nil
16
+ @last_hash_max_length = 1_000
17
+ @args_max_length = 1_000
18
+ @instance_benchmarks = false
19
+ @class_benchmarks = false
20
+ @add_invocation_id = true
21
+ @ellipsis = " ✂️ …".freeze
22
+ end
23
+ def instance_benchmarks=(instance_benchmarks)
24
+ require "benchmark" if instance_benchmarks
25
+ @instance_benchmarks = instance_benchmarks
26
+ end
27
+ def class_benchmarks=(class_benchmarks)
28
+ require "benchmark" if class_benchmarks
29
+ @class_benchmarks = class_benchmarks
30
+ end
31
+ end
32
+ end
@@ -5,6 +5,7 @@ module DebugLogging
5
5
  end
6
6
  def included(base)
7
7
  if @instance_methods_to_log
8
+ base.send(:include, ArgumentPrinter)
8
9
  instance_method_logger = DebugLogging::InstanceLoggerModulizer.to_mod(@instance_methods_to_log)
9
10
  base.send(:prepend, instance_method_logger)
10
11
  end
@@ -3,15 +3,16 @@ module DebugLogging
3
3
  def self.to_mod(methods_to_log = [])
4
4
  Module.new do
5
5
  Array(methods_to_log).each do |method_to_log|
6
+ # method name must be a symbol
6
7
  define_method(method_to_log.to_sym) do |*args, &block|
7
8
  method_return_value = nil
8
- invocation_id = " ~#{args.object_id}@#{Time.now.to_i}~" if DebugLogging.add_invocation_id && args
9
- DebugLogging.log "#{self.class}##{method_to_log}#{DebugLogging::ArgumentPrinter.to_s(args)}#{invocation_id}"
10
- if DebugLogging.instance_benchmarks
9
+ invocation_id = " ~#{args.object_id}@#{Time.now.to_i}~" if self.class.debug_add_invocation_id && args
10
+ self.class.debug_log "#{self.class}##{method_to_log}#{self.class.debug_arguments_to_s(args)}#{invocation_id}"
11
+ if self.class.debug_instance_benchmarks
11
12
  elapsed = Benchmark.realtime do
12
13
  method_return_value = super(*args, &block)
13
14
  end
14
- DebugLogging.log "#{self.class}##{method_to_log} completed in #{sprintf("%f", elapsed)}s#{invocation_id}"
15
+ self.class.debug_log "#{self.class}##{method_to_log} completed in #{sprintf("%f", elapsed)}s#{invocation_id}"
15
16
  else
16
17
  method_return_value = super(*args, &block)
17
18
  end
@@ -1,3 +1,3 @@
1
1
  module DebugLogging
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.0"
3
3
  end
data/lib/debug_logging.rb CHANGED
@@ -1,16 +1,11 @@
1
1
  require "logger"
2
2
  require "debug_logging/version"
3
+ require "debug_logging/configuration"
3
4
  require "debug_logging/argument_printer"
4
5
  require "debug_logging/instance_logger_modulizer"
5
6
  require "debug_logging/instance_logger"
6
7
  require "debug_logging/class_logger"
7
8
 
8
- ####################
9
- # #
10
- # Next Level Magic #
11
- # Classes inheriting from Module.
12
- # Cats and dogs sleeping together.
13
- # #
14
9
  ####################
15
10
  # #
16
11
  # NOTE: The manner this is made to work for class methods is totally different
@@ -24,15 +19,23 @@ require "debug_logging/class_logger"
24
19
  # #
25
20
  # class Car
26
21
  #
22
+ # # adds the helper methods to the class, all are prefixed with debug_*,
23
+ # # except for the logged class method, which comes from extending DebugLogging::ClassLogger
24
+ # extend DebugLogging
25
+ #
26
+ # # per class configuration overrides!
27
+ # self.debug_class_benchmarks = true
28
+ # self.debug_instance_benchmarks = true
29
+ #
27
30
  # # For instance methods:
28
31
  # # Option 1: specify the exact method(s) to add logging to
29
32
  # include DebugLogging::InstanceLogger.new(i_methods: [:drive, :stop])
30
33
  #
31
34
  # extend DebugLogging::ClassLogger
32
35
  #
33
- # logged def self.make; new; end
34
- # def self.design(*args); new; end
35
- # def self.safety(*args); new; end
36
+ # logged def debug_make; new; end
37
+ # def design(*args); new; end
38
+ # def safety(*args); new; end
36
39
  # logged :design, :safety
37
40
  #
38
41
  # def drive(speed); speed; end
@@ -40,7 +43,7 @@ require "debug_logging/class_logger"
40
43
  #
41
44
  # # For instance methods:
42
45
  # # Option 2: add logging to all instance methods defined above (but *not* defined below)
43
- # include DebugLogging::InstanceLogger.new(i_methods: self.instance_methods(false))
46
+ # include DebugLogging::InstanceLogger.new(i_methods: debug_instance_methods(false))
44
47
  #
45
48
  # def will_not_be_logged; false; end
46
49
  #
@@ -49,75 +52,93 @@ require "debug_logging/class_logger"
49
52
  ####################
50
53
 
51
54
  module DebugLogging
52
- def self.config_reset
53
- @@logger = nil
54
- @@log_level = :debug
55
- @@last_hash_to_s_proc = nil
56
- @@last_hash_max_length = 1_000
57
- @@args_max_length = 1_000
58
- @@instance_benchmarks = false
59
- @@class_benchmarks = false
60
- @@add_invocation_id = true
61
- @@ellipsis = " ✂️ …".freeze
55
+ def self.extended(base)
56
+ base.send(:extend, ArgumentPrinter)
57
+ base.debug_config_reset(debug_logging_configuration.dup)
58
+ end
59
+
60
+ #### API ####
61
+ def debug_log(message)
62
+ debug_logger.send(debug_log_level, message)
63
+ end
64
+
65
+ # For single statement global config in an initializer
66
+ # e.g. DebugLogging.configuration.ellipsis = "..."
67
+ def self.configuration
68
+ self.debug_logging_configuration ||= Configuration.new
69
+ end
70
+
71
+ # For global config in an initializer with a block
72
+ def self.configure
73
+ yield(configuration)
74
+ end
75
+
76
+ # For per-class config with a block
77
+ def debug_logging_configure
78
+ @debug_logging_configuration ||= Configuration.new
79
+ yield(@debug_logging_configuration)
80
+ end
81
+
82
+ #### CONFIG ####
83
+ class << self
84
+ attr_accessor :debug_logging_configuration
62
85
  end
63
- def self.logger
64
- @@logger ||= Logger.new(STDOUT)
86
+ def debug_config_reset(config = Configuration.new)
87
+ @debug_logging_configuration = config
65
88
  end
66
- def self.logger=(logger)
67
- @@logger = logger
89
+ def debug_logger
90
+ @debug_logging_configuration.logger
68
91
  end
69
- def self.log_level
70
- @@log_level || :debug
92
+ def debug_logger=(logger)
93
+ @debug_logging_configuration.logger = logger
71
94
  end
72
- def self.log_level=(log_level)
73
- @@log_level = log_level
95
+ def debug_log_level
96
+ @debug_logging_configuration.log_level
74
97
  end
75
- def self.last_hash_to_s_proc
76
- @@last_hash_to_s_proc
98
+ def debug_log_level=(log_level)
99
+ @debug_logging_configuration.log_level = log_level
77
100
  end
78
- def self.last_hash_to_s_proc=(last_hash_to_s_proc)
79
- @@last_hash_to_s_proc = last_hash_to_s_proc
101
+ def debug_last_hash_to_s_proc
102
+ @debug_logging_configuration.last_hash_to_s_proc
80
103
  end
81
- def self.last_hash_max_length
82
- @@last_hash_max_length || 1_000
104
+ def debug_last_hash_to_s_proc=(last_hash_to_s_proc)
105
+ @debug_logging_configuration.last_hash_to_s_proc = last_hash_to_s_proc
83
106
  end
84
- def self.last_hash_max_length=(last_hash_max_length)
85
- @@last_hash_max_length = last_hash_max_length
107
+ def debug_last_hash_max_length
108
+ @debug_logging_configuration.last_hash_max_length
86
109
  end
87
- def self.args_max_length
88
- @@args_max_length || 1_000
110
+ def debug_last_hash_max_length=(last_hash_max_length)
111
+ @debug_logging_configuration.last_hash_max_length = last_hash_max_length
89
112
  end
90
- def self.args_max_length=(args_max_length)
91
- @@args_max_length = args_max_length
113
+ def debug_args_max_length
114
+ @debug_logging_configuration.args_max_length
92
115
  end
93
- def self.instance_benchmarks
94
- @@instance_benchmarks
116
+ def debug_args_max_length=(args_max_length)
117
+ @debug_logging_configuration.args_max_length = args_max_length
95
118
  end
96
- def self.instance_benchmarks=(instance_benchmarks)
97
- require "benchmark" if instance_benchmarks
98
- @@instance_benchmarks = instance_benchmarks
119
+ def debug_instance_benchmarks
120
+ @debug_logging_configuration.instance_benchmarks
99
121
  end
100
- def self.class_benchmarks
101
- @@class_benchmarks
122
+ def debug_instance_benchmarks=(instance_benchmarks)
123
+ @debug_logging_configuration.instance_benchmarks = instance_benchmarks
102
124
  end
103
- def self.class_benchmarks=(class_benchmarks)
104
- require "benchmark" if class_benchmarks
105
- @@class_benchmarks = class_benchmarks
125
+ def debug_class_benchmarks
126
+ @debug_logging_configuration.class_benchmarks
106
127
  end
107
- def self.add_invocation_id
108
- @@add_invocation_id
128
+ def debug_class_benchmarks=(class_benchmarks)
129
+ @debug_logging_configuration.class_benchmarks = class_benchmarks
109
130
  end
110
- def self.add_invocation_id=(add_invocation_id)
111
- @@add_invocation_id = add_invocation_id
131
+ def debug_add_invocation_id
132
+ @debug_logging_configuration.add_invocation_id
112
133
  end
113
- def self.ellipsis
114
- @@ellipsis
134
+ def debug_add_invocation_id=(add_invocation_id)
135
+ @debug_logging_configuration.add_invocation_id = add_invocation_id
115
136
  end
116
- def self.ellipsis=(ellipsis)
117
- @@ellipsis = ellipsis
137
+ def debug_ellipsis
138
+ @debug_logging_configuration.ellipsis
118
139
  end
119
- def self.log(message)
120
- logger.send(log_level, message)
140
+ def debug_ellipsis=(ellipsis)
141
+ @debug_logging_configuration.ellipsis = ellipsis
121
142
  end
122
- config_reset # setup defaults
143
+ self.debug_logging_configuration = Configuration.new # setup defaults
123
144
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debug_logging
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-25 00:00:00.000000000 Z
11
+ date: 2017-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-pending_for
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: byebug
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '9.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '9.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -73,6 +87,7 @@ executables: []
73
87
  extensions: []
74
88
  extra_rdoc_files: []
75
89
  files:
90
+ - ".byebug_history"
76
91
  - ".gitignore"
77
92
  - ".rspec"
78
93
  - ".travis.yml"
@@ -85,6 +100,7 @@ files:
85
100
  - lib/debug_logging.rb
86
101
  - lib/debug_logging/argument_printer.rb
87
102
  - lib/debug_logging/class_logger.rb
103
+ - lib/debug_logging/configuration.rb
88
104
  - lib/debug_logging/instance_logger.rb
89
105
  - lib/debug_logging/instance_logger_modulizer.rb
90
106
  - lib/debug_logging/version.rb