lib/console/resolver.rb in console-1.9.1 vs lib/console/resolver.rb in console-1.10.0
- old
+ new
@@ -20,9 +20,39 @@
require_relative 'filter'
module Console
class Resolver
+ # You can change the log level for different classes using CONSOLE_<LEVEL> env vars.
+ #
+ # e.g. `CONSOLE_WARN=Acorn,Banana CONSOLE_DEBUG=Cat` will set the log level for the classes Acorn and Banana to `warn` and Cat to `debug`. This overrides the default log level.
+ #
+ # @parameter logger [Logger] A logger instance to set the logging levels on.
+ # @parameter env [Hash] The environment to read levels from.
+ #
+ # @returns [Nil] If there were no custom logging levels specified in the environment.
+ # @returns [Resolver] If there were custom logging levels, then the created resolver is returned.
+ def self.default_resolver(logger, env = ENV)
+ # Find all CONSOLE_<LEVEL> variables from environment:
+ levels = Logger::LEVELS
+ .map{|label, level| [level, env["CONSOLE_#{label.upcase}"]&.split(',')]}
+ .to_h
+ .compact
+
+ # If we have any levels, then create a class resolver, and each time a class is resolved, set the log level for that class to the specified level:
+ if levels.any?
+ resolver = Resolver.new
+
+ levels.each do |level, names|
+ resolver.bind(names) do |klass|
+ logger.enable(klass, level)
+ end
+ end
+
+ return resolver
+ end
+ end
+
def initialize
@names = {}
@trace_point = TracePoint.new(:class, &self.method(:resolve))
end