Module: Reality::Logging
- Defined in:
- lib/reality/logging.rb
Defined Under Namespace
Modules: Assertions
Class Method Summary collapse
-
.configure(module_type, level = ::Logger::INFO, stream = STDOUT) ⇒ Object
noinspection RubyDynamicConstAssignment.
-
.set_levels(levels, *loggers) ⇒ Object
Set the levels on an array of loggers.
Class Method Details
.configure(module_type, level = ::Logger::INFO, stream = STDOUT) ⇒ Object
noinspection RubyDynamicConstAssignment
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/reality/logging.rb', line 52 def configure(module_type, level = ::Logger::INFO, stream = STDOUT) logger = ::Logger.new(stream) logger.level = level logger.formatter = proc { |severity, datetime, progname, msg| "#{msg}\n" } module_type.const_set(:Logger, logger) module_type.instance_eval do def self.debug() self.const_get(:Logger).debug() end def self.info() self.const_get(:Logger).info() end def self.warn() self.const_get(:Logger).warn() end def self.error() self.const_get(:Logger).error() raise end end end |
.set_levels(levels, *loggers) ⇒ Object
Set the levels on an array of loggers. The levels parameter must be an array matching the number of loggers supplied or a single level. If a block is supplied then the levels are set to the specified values for the duration of the block and then reset to original values after the block completes.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/reality/logging.rb', line 24 def set_levels(levels, *loggers) if levels.is_a?(Array) && levels.size != loggers.size raise "Attempting to set log levels using an array of size #{levels.size} that does not match the number of loggers supplied #{loggers.size}" end if block_given? saved_levels = [] loggers.each_with_index do |logger, index| saved_levels[index] = logger.level end begin loggers.each_with_index do |logger, index| logger.level = levels.is_a?(Array) ? levels[index] : levels end yield ensure loggers.each_with_index do |logger, index| logger.level = saved_levels[index] end end else loggers.each_with_index do |logger, index| logger.level = levels.is_a?(Array) ? levels[index] : levels end end end |