class ReeLogger::Config
def build
def build to_obj({ file_path: ENV['LOG_FILE_PATH'], file_auto_flush: parse_bool_string(ENV['LOG_FILE_AUTO_FLUSH']), levels: { file: parse_level(ENV['LOG_LEVEL_FILE']), stdout: parse_level(ENV['LOG_LEVEL_STDOUT']), }, rate_limit: { interval: get_int_value('LOG_RATE_LIMIT_INTERVAL', RATE_LIMIT_INTERVAL), max_count: get_int_value('LOG_RATE_LIMIT_MAX_COUNT', RATE_LIMIT_MAX_COUNT), }, default_filter_words: %w[ password token credential bearer authorization ] }) end
def get_int_value(name, default)
def get_int_value(name, default) value = ENV[name] v = if value.to_s.strip.empty? default else Integer(value) end if v < 0 raise ArgumentError, "ENV['#{name}'] should be > 0" end v end
def parse_bool_string(bool)
def parse_bool_string(bool) return false if is_blank(bool) return bool.to_s.downcase == "true" end
def parse_level(level)
def parse_level(level) return if is_blank(level) validate_inclusion(level, LEVELS) level.to_sym end