Module: DebugLogging

Defined in:
lib/debug_logging.rb,
lib/debug_logging/version.rb,
lib/debug_logging/class_logger.rb,
lib/debug_logging/configuration.rb,
lib/debug_logging/instance_logger.rb,
lib/debug_logging/argument_printer.rb,
lib/debug_logging/instance_logger_modulizer.rb

Overview

# NOTE: The manner this is made to work for class methods is totally different

than the way this is made to work for instance methods.

NOTE: The instance method manner works on Ruby 2.0+ NOTE: The class method manner works on Ruby 2.1+

#

#

USAGE (see specs)#

             #
class Car

  # adds the helper methods to the class, all are prefixed with debug_*,
  #   except for the logged class method, which comes from extending DebugLogging::ClassLogger
  extend DebugLogging

  # per class configuration overrides!
  self.debug_class_benchmarks = true
  self.debug_instance_benchmarks = true

  # For instance methods:
  # Option 1: specify the exact method(s) to add logging to
  include DebugLogging::InstanceLogger.new(i_methods: [:drive, :stop])

  # Provides the `logged` method decorator
  extend DebugLogging::ClassLogger

  logged def debug_make; new; end
  def design(*args); new; end
  def safety(*args); new; end
  logged :design, :safety

  def drive(speed); speed; end
  def stop; 0; end

  # For instance methods:
  # Option 2: add logging to all instance methods defined above (but *not* defined below)
  include DebugLogging::InstanceLogger.new(i_methods: self.instance_methods(false))

  def will_not_be_logged; false; end

end
             #

Defined Under Namespace

Modules: ArgumentPrinter, ClassLogger, InstanceLoggerModulizer Classes: Configuration, InstanceLogger

Constant Summary collapse

VERSION =
"1.0.12"

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.debug_logging_configurationObject

Returns the value of attribute debug_logging_configuration.



99
100
101
# File 'lib/debug_logging.rb', line 99

def debug_logging_configuration
  @debug_logging_configuration
end

Class Method Details

.configurationObject

For single statement global config in an initializer e.g. DebugLogging.configuration.ellipsis = “…”



82
83
84
# File 'lib/debug_logging.rb', line 82

def self.configuration
  self.debug_logging_configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

For global config in an initializer with a block

Yields:



87
88
89
# File 'lib/debug_logging.rb', line 87

def self.configure
  yield(configuration)
end

.extended(base) ⇒ Object



57
58
59
60
# File 'lib/debug_logging.rb', line 57

def self.extended(base)
  base.send(:extend, ArgumentPrinter)
  base.debug_config_reset(debug_logging_configuration.dup)
end

Instance Method Details

#debug_add_invocation_idObject



164
165
166
# File 'lib/debug_logging.rb', line 164

def debug_add_invocation_id
  @debug_logging_configuration.add_invocation_id
end

#debug_add_invocation_id=(add_invocation_id) ⇒ Object



167
168
169
# File 'lib/debug_logging.rb', line 167

def debug_add_invocation_id=(add_invocation_id)
  @debug_logging_configuration.add_invocation_id = add_invocation_id
end

#debug_args_max_lengthObject



134
135
136
# File 'lib/debug_logging.rb', line 134

def debug_args_max_length
  @debug_logging_configuration.args_max_length
end

#debug_args_max_length=(args_max_length) ⇒ Object



137
138
139
# File 'lib/debug_logging.rb', line 137

def debug_args_max_length=(args_max_length)
  @debug_logging_configuration.args_max_length = args_max_length
end

#debug_class_benchmarksObject



146
147
148
# File 'lib/debug_logging.rb', line 146

def debug_class_benchmarks
  @debug_logging_configuration.class_benchmarks
end

#debug_class_benchmarks=(class_benchmarks) ⇒ Object



149
150
151
# File 'lib/debug_logging.rb', line 149

def debug_class_benchmarks=(class_benchmarks)
  @debug_logging_configuration.class_benchmarks = class_benchmarks
end

#debug_colorized_chain_for_classObject



158
159
160
# File 'lib/debug_logging.rb', line 158

def debug_colorized_chain_for_class
  @debug_logging_configuration.colorized_chain_for_class
end

#debug_colorized_chain_for_class=(colorized_chain_for_class) ⇒ Object



161
162
163
# File 'lib/debug_logging.rb', line 161

def debug_colorized_chain_for_class=(colorized_chain_for_class)
  @debug_logging_configuration.colorized_chain_for_class = colorized_chain_for_class
end

#debug_colorized_chain_for_methodObject



152
153
154
# File 'lib/debug_logging.rb', line 152

def debug_colorized_chain_for_method
  @debug_logging_configuration.colorized_chain_for_method
end

#debug_colorized_chain_for_method=(colorized_chain_for_method) ⇒ Object



155
156
157
# File 'lib/debug_logging.rb', line 155

def debug_colorized_chain_for_method=(colorized_chain_for_method)
  @debug_logging_configuration.colorized_chain_for_method = colorized_chain_for_method
end

#debug_configObject

There are times when the class will need access to the configuration object,

such as to override it per instance method


76
77
78
# File 'lib/debug_logging.rb', line 76

def debug_config
  @debug_logging_configuration
end

#debug_config_reset(config = Configuration.new) ⇒ Object



101
102
103
# File 'lib/debug_logging.rb', line 101

def debug_config_reset(config = Configuration.new)
  @debug_logging_configuration = config
end

#debug_ellipsisObject



176
177
178
# File 'lib/debug_logging.rb', line 176

def debug_ellipsis
  @debug_logging_configuration.ellipsis
end

#debug_ellipsis=(ellipsis) ⇒ Object



179
180
181
# File 'lib/debug_logging.rb', line 179

def debug_ellipsis=(ellipsis)
  @debug_logging_configuration.ellipsis = ellipsis
end

#debug_instance_benchmarksObject



140
141
142
# File 'lib/debug_logging.rb', line 140

def debug_instance_benchmarks
  @debug_logging_configuration.instance_benchmarks
end

#debug_instance_benchmarks=(instance_benchmarks) ⇒ Object



143
144
145
# File 'lib/debug_logging.rb', line 143

def debug_instance_benchmarks=(instance_benchmarks)
  @debug_logging_configuration.instance_benchmarks = instance_benchmarks
end

#debug_last_hash_max_lengthObject



128
129
130
# File 'lib/debug_logging.rb', line 128

def debug_last_hash_max_length
  @debug_logging_configuration.last_hash_max_length
end

#debug_last_hash_max_length=(last_hash_max_length) ⇒ Object



131
132
133
# File 'lib/debug_logging.rb', line 131

def debug_last_hash_max_length=(last_hash_max_length)
  @debug_logging_configuration.last_hash_max_length = last_hash_max_length
end

#debug_last_hash_to_s_procObject



122
123
124
# File 'lib/debug_logging.rb', line 122

def debug_last_hash_to_s_proc
  @debug_logging_configuration.last_hash_to_s_proc
end

#debug_last_hash_to_s_proc=(last_hash_to_s_proc) ⇒ Object



125
126
127
# File 'lib/debug_logging.rb', line 125

def debug_last_hash_to_s_proc=(last_hash_to_s_proc)
  @debug_logging_configuration.last_hash_to_s_proc = last_hash_to_s_proc
end

#debug_log(message = nil, config_proxy = nil, &block) ⇒ Object

API #### Not used by this gem internally, but provides an external interface for

classes to also use this logging tool directly,
with configured options like benchmarking, colors, or leg level.


66
67
68
69
70
71
72
# File 'lib/debug_logging.rb', line 66

def debug_log(message = nil, config_proxy = nil, &block)
  # If a, instance-method-level, or class-method-level custom config is not
  #   passed in, then fall back to the class' default config, which is a 
  #   potentially customized copy of the default config for the whole app.
  config_proxy ||= debug_config
  config_proxy.log(message, &block)
end

#debug_log_levelObject



110
111
112
# File 'lib/debug_logging.rb', line 110

def debug_log_level
  @debug_logging_configuration.log_level
end

#debug_log_level=(log_level) ⇒ Object



113
114
115
# File 'lib/debug_logging.rb', line 113

def debug_log_level=(log_level)
  @debug_logging_configuration.log_level = log_level
end

#debug_loggerObject



104
105
106
# File 'lib/debug_logging.rb', line 104

def debug_logger
  @debug_logging_configuration.logger
end

#debug_logger=(logger) ⇒ Object



107
108
109
# File 'lib/debug_logging.rb', line 107

def debug_logger=(logger)
  @debug_logging_configuration.logger = logger
end

#debug_logging_configure {|@debug_logging_configuration| ... } ⇒ Object

For per-class config with a block



92
93
94
95
# File 'lib/debug_logging.rb', line 92

def debug_logging_configure
  @debug_logging_configuration ||= Configuration.new
  yield(@debug_logging_configuration)
end

#debug_mark_scope_exitObject



170
171
172
# File 'lib/debug_logging.rb', line 170

def debug_mark_scope_exit
  @debug_logging_configuration.mark_scope_exit
end

#debug_mark_scope_exit=(mark_scope_exit) ⇒ Object



173
174
175
# File 'lib/debug_logging.rb', line 173

def debug_mark_scope_exit=(mark_scope_exit)
  @debug_logging_configuration.mark_scope_exit = mark_scope_exit
end

#debug_multiple_last_hashesObject



116
117
118
# File 'lib/debug_logging.rb', line 116

def debug_multiple_last_hashes
  @debug_logging_configuration.multiple_last_hashes
end

#debug_multiple_last_hashes=(multiple_last_hashes) ⇒ Object



119
120
121
# File 'lib/debug_logging.rb', line 119

def debug_multiple_last_hashes=(multiple_last_hashes)
  @debug_logging_configuration.multiple_last_hashes = multiple_last_hashes
end