class Console::Filter
Attributes
level[R]
options[RW]
output[RW]
subjects[R]
verbose[R]
Public Class Methods
[](**levels)
click to toggle source
# File lib/console/filter.rb, line 27 def self.[] **levels klass = Class.new(self) min_level, max_level = levels.values.minmax klass.instance_exec do const_set(:LEVELS, levels) const_set(:MINIMUM_LEVEL, min_level) const_set(:MAXIMUM_LEVEL, max_level) levels.each do |name, level| const_set(name.to_s.upcase, level) define_method(name) do |subject = nil, *arguments, **options, &block| if self.enabled?(subject, level) self.call(subject, *arguments, severity: name, **options, **@options, &block) end end define_method("#{name}!") do @level = level end define_method("#{name}?") do @level <= level end end end return klass end
new(output, verbose: true, level: self.class::DEFAULT_LEVEL, enabled: nil, **options)
click to toggle source
# File lib/console/filter.rb, line 58 def initialize(output, verbose: true, level: self.class::DEFAULT_LEVEL, enabled: nil, **options) @output = output @verbose = verbose @level = level @subjects = {} @options = options if enabled enabled.each{|name| enable(name)} end end
Public Instance Methods
all!()
click to toggle source
# File lib/console/filter.rb, line 105 def all! @level = self.class::MINIMUM_LEVEL - 1 end
call(*arguments, **options, &block)
click to toggle source
# File lib/console/filter.rb, line 141 def call(*arguments, **options, &block) @output.call(*arguments, **options, &block) end
disable(subject)
click to toggle source
Disable specific logging for the specific class. @param name [String, Class] The class to disable.
# File lib/console/filter.rb, line 133 def disable(subject) unless subject.is_a? Class subject = subject.class end @subjects.delete(subject) end
enable(subject, level = self.class::MINIMUM_LEVEL)
click to toggle source
Enable specific log level for the given class. @param name [String, Class] The class to enable.
# File lib/console/filter.rb, line 123 def enable(subject, level = self.class::MINIMUM_LEVEL) unless subject.is_a?(Class) subject = subject.class end @subjects[subject] = level end
enabled?(subject, level = self.class::MINIMUM_LEVEL)
click to toggle source
You can enable and disable logging for classes. This function checks if logging for a given subject is enabled. @param subject [Object] the subject to check.
# File lib/console/filter.rb, line 111 def enabled?(subject, level = self.class::MINIMUM_LEVEL) if specific_level = @subjects[subject.class] return level >= specific_level end if level >= @level return true end end
level=(level)
click to toggle source
# File lib/console/filter.rb, line 88 def level= level if level.is_a? Symbol @level = self.class::LEVELS[level] else @level = level end end
off!()
click to toggle source
# File lib/console/filter.rb, line 101 def off! @level = self.class::MAXIMUM_LEVEL + 1 end
verbose!(value = true)
click to toggle source
# File lib/console/filter.rb, line 96 def verbose!(value = true) @verbose = value @output.verbose!(value) end
with(level: @level, verbose: @verbose, **options)
click to toggle source
# File lib/console/filter.rb, line 72 def with(level: @level, verbose: @verbose, **options) dup.tap do |logger| logger.level = level logger.verbose! if verbose logger.options = @options.merge(options) end end