Method: VCAP::Logging.set_log_level

Defined in:
lib/vcap/logging.rb

.set_log_level(path_regex, log_level_name) ⇒ Object

Sets the log level to log_level for every logger whose name matches path_regex. Loggers who were previously set to this level and whose names no longer match path_regex are reset to the default level.

Parameters:

  • path_regex

    String Regular expression to use when matching against the logger name

  • log_level_name

    Symbol Name of the log level to set on all matching loggers

Raises:

  • (ArgumentError)


129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/vcap/logging.rb', line 129

def set_log_level(path_regex, log_level_name)
  log_level_name = log_level_name.to_sym if log_level_name.kind_of?(String)

  raise ArgumentError, "Unknown log level #{log_level_name}" unless LOG_LEVELS[log_level_name]
  regex = Regexp.new("^#{path_regex}$")

  @log_level_filters[log_level_name] = regex
  @sorted_log_level_filters = @log_level_filters.keys.sort {|a, b| LOG_LEVELS[a] <=> LOG_LEVELS[b] }.map {|lvl| [lvl, @log_level_filters[lvl]] }

  for logger_name, logger in @loggers
    if regex.match(logger_name)
      logger.log_level = log_level_name
    elsif logger.log_level == log_level_name
      # Reset any loggers at the supplied level that no longer match
      logger.log_level = @default_log_level
    end
  end
end