diff --git a/lib/ldclient-rb/evaluation.rb b/lib/ldclient-rb/evaluation.rb index 5ff32dc4..2b98c648 100644 --- a/lib/ldclient-rb/evaluation.rb +++ b/lib/ldclient-rb/evaluation.rb @@ -156,7 +156,7 @@ def eval_internal(flag, user, store, events) failed_prereq = true end rescue => exn - @config.logger.error("[LDClient] Error evaluating prerequisite: #{exn.inspect}") + @config.logger.error { "[LDClient] Error evaluating prerequisite: #{exn.inspect}" } failed_prereq = true end end diff --git a/lib/ldclient-rb/events.rb b/lib/ldclient-rb/events.rb index f4874538..84ea0275 100644 --- a/lib/ldclient-rb/events.rb +++ b/lib/ldclient-rb/events.rb @@ -50,9 +50,9 @@ def post_flushed_events(events) req.options.open_timeout = @config.connect_timeout end if res.status < 200 || res.status >= 300 - @config.logger.error("[LDClient] Unexpected status code while processing events: #{res.status}") + @config.logger.error { "[LDClient] Unexpected status code while processing events: #{res.status}" } if res.status == 401 - @config.logger.error("[LDClient] Received 401 error, no further events will be posted since SDK key is invalid") + @config.logger.error { "[LDClient] Received 401 error, no further events will be posted since SDK key is invalid" } stop end end @@ -78,14 +78,14 @@ def add_event(event) if @queue.length < @config.capacity event[:creationDate] = (Time.now.to_f * 1000).to_i - @config.logger.debug("[LDClient] Enqueueing event: #{event.to_json}") + @config.logger.debug { "[LDClient] Enqueueing event: #{event.to_json}" } @queue.push(event) if !@worker.alive? @worker = create_worker end else - @config.logger.warn("[LDClient] Exceeded event queue capacity. Increase capacity to avoid dropping events.") + @config.logger.warn { "[LDClient] Exceeded event queue capacity. Increase capacity to avoid dropping events." } end end diff --git a/lib/ldclient-rb/ldclient.rb b/lib/ldclient-rb/ldclient.rb index 973b043c..2c91bd60 100644 --- a/lib/ldclient-rb/ldclient.rb +++ b/lib/ldclient-rb/ldclient.rb @@ -31,7 +31,7 @@ def initialize(sdk_key, config = Config.default, wait_for_sec = 5) @event_processor = EventProcessor.new(sdk_key, config) if @config.use_ldd? - @config.logger.info("[LDClient] Started LaunchDarkly Client in LDD mode") + @config.logger.info { "[LDClient] Started LaunchDarkly Client in LDD mode" } return # requestor and update processor are not used in this mode end @@ -41,8 +41,8 @@ def initialize(sdk_key, config = Config.default, wait_for_sec = 5) if @config.stream? @update_processor = StreamProcessor.new(sdk_key, config, requestor) else - @config.logger.info("Disabling streaming API") - @config.logger.warn("You should only disable the streaming API if instructed to do so by LaunchDarkly support") + @config.logger.info { "Disabling streaming API" } + @config.logger.warn { "You should only disable the streaming API if instructed to do so by LaunchDarkly support" } @update_processor = PollingProcessor.new(config, requestor) end @update_processor.start @@ -54,7 +54,7 @@ def initialize(sdk_key, config = Config.default, wait_for_sec = 5) initialized? end rescue WaitUtil::TimeoutError - @config.logger.error("[LDClient] Timeout encountered waiting for LaunchDarkly client initialization") + @config.logger.error { "[LDClient] Timeout encountered waiting for LaunchDarkly client initialization" } end end end @@ -64,7 +64,7 @@ def flush end def toggle?(key, user, default = False) - @config.logger.warn("[LDClient] toggle? is deprecated. Use variation instead") + @config.logger.warn { "[LDClient] toggle? is deprecated. Use variation instead" } variation(key, user, default) end @@ -114,16 +114,16 @@ def variation(key, user, default) return default if @config.offline? unless user - @config.logger.error("[LDClient] Must specify user") + @config.logger.error { "[LDClient] Must specify user" } @event_processor.add_event(kind: "feature", key: key, value: default, default: default, user: user) return default end if !initialized? if @store.initialized? - @config.logger.warn("[LDClient] Client has not finished initializing; using last known values from feature store") + @config.logger.warn { "[LDClient] Client has not finished initializing; using last known values from feature store" } else - @config.logger.error("[LDClient] Client has not finished initializing; feature store unavailable, returning default value") + @config.logger.error { "[LDClient] Client has not finished initializing; feature store unavailable, returning default value" } @event_processor.add_event(kind: "feature", key: key, value: default, default: default, user: user) return default end @@ -133,7 +133,7 @@ def variation(key, user, default) feature = @store.get(FEATURES, key) if feature.nil? - @config.logger.info("[LDClient] Unknown feature flag #{key}. Returning default value") + @config.logger.info { "[LDClient] Unknown feature flag #{key}. Returning default value" } @event_processor.add_event(kind: "feature", key: key, value: default, default: default, user: user) return default end @@ -149,12 +149,12 @@ def variation(key, user, default) @event_processor.add_event(kind: "feature", key: key, user: user, value: res[:value], default: default, version: feature[:version]) return res[:value] else - @config.logger.debug("[LDClient] Result value is null in toggle") + @config.logger.debug { "[LDClient] Result value is null in toggle" } @event_processor.add_event(kind: "feature", key: key, user: user, value: default, default: default, version: feature[:version]) return default end rescue => exn - @config.logger.warn("[LDClient] Error evaluating feature flag: #{exn.inspect}. \nTrace: #{exn.backtrace}") + @config.logger.warn { "[LDClient] Error evaluating feature flag: #{exn.inspect}. \nTrace: #{exn.backtrace}" } @event_processor.add_event(kind: "feature", key: key, user: user, value: default, default: default, version: feature[:version]) return default end @@ -192,7 +192,7 @@ def all_flags(user) return Hash.new if @config.offline? unless user - @config.logger.error("[LDClient] Must specify user in all_flags") + @config.logger.error { "[LDClient] Must specify user in all_flags" } return Hash.new end @@ -202,7 +202,7 @@ def all_flags(user) # TODO rescue if necessary Hash[features.map{ |k, f| [k, evaluate(f, user, @store)[:value]] }] rescue => exn - @config.logger.warn("[LDClient] Error evaluating all flags: #{exn.inspect}. \nTrace: #{exn.backtrace}") + @config.logger.warn { "[LDClient] Error evaluating all flags: #{exn.inspect}. \nTrace: #{exn.backtrace}" } return Hash.new end end @@ -212,7 +212,7 @@ def all_flags(user) # # @return [void] def close - @config.logger.info("[LDClient] Closing LaunchDarkly client...") + @config.logger.info { "[LDClient] Closing LaunchDarkly client..." } if not @config.offline? @update_processor.stop end @@ -223,7 +223,7 @@ def close def log_exception(caller, exn) error_traceback = "#{exn.inspect} #{exn}\n\t#{exn.backtrace.join("\n\t")}" error = "[LDClient] Unexpected exception in #{caller}: #{error_traceback}" - @config.logger.error(error) + @config.logger.error { error } end def sanitize_user(user) diff --git a/lib/ldclient-rb/polling.rb b/lib/ldclient-rb/polling.rb index 00cf5e8e..cc391bca 100644 --- a/lib/ldclient-rb/polling.rb +++ b/lib/ldclient-rb/polling.rb @@ -17,7 +17,7 @@ def initialized? def start return unless @started.make_true - @config.logger.info("[LDClient] Initializing polling connection") + @config.logger.info { "[LDClient] Initializing polling connection" } create_worker end @@ -26,7 +26,7 @@ def stop if @worker && @worker.alive? @worker.raise "shutting down client" end - @config.logger.info("[LDClient] Polling connection stopped") + @config.logger.info { "[LDClient] Polling connection stopped" } end end @@ -38,14 +38,14 @@ def poll SEGMENTS => all_data[:segments] }) if @initialized.make_true - @config.logger.info("[LDClient] Polling connection initialized") + @config.logger.info { "[LDClient] Polling connection initialized" } end end end def create_worker @worker = Thread.new do - @config.logger.debug("[LDClient] Starting polling worker") + @config.logger.debug { "[LDClient] Starting polling worker" } while !@stopped.value do begin started_at = Time.now @@ -55,10 +55,10 @@ def create_worker sleep(delta) end rescue InvalidSDKKeyError - @config.logger.error("[LDClient] Received 401 error, no further polling requests will be made since SDK key is invalid"); + @config.logger.error { "[LDClient] Received 401 error, no further polling requests will be made since SDK key is invalid" }; stop rescue StandardError => exn - @config.logger.error("[LDClient] Exception while polling: #{exn.inspect}") + @config.logger.error { "[LDClient] Exception while polling: #{exn.inspect}" } # TODO: log_exception(__method__.to_s, exn) end end diff --git a/lib/ldclient-rb/redis_store.rb b/lib/ldclient-rb/redis_store.rb index 2374eb23..ad2991f2 100644 --- a/lib/ldclient-rb/redis_store.rb +++ b/lib/ldclient-rb/redis_store.rb @@ -94,12 +94,12 @@ def self.default_prefix def get(kind, key) f = @cache[cache_key(kind, key)] if f.nil? - @logger.debug("RedisFeatureStore: no cache hit for #{key} in '#{kind[:namespace]}', requesting from Redis") + @logger.debug { "RedisFeatureStore: no cache hit for #{key} in '#{kind[:namespace]}', requesting from Redis" } f = with_connection do |redis| begin get_redis(kind, redis, key.to_sym) rescue => e - @logger.error("RedisFeatureStore: could not retrieve #{key} from Redis in '#{kind[:namespace]}', with error: #{e}") + @logger.error { "RedisFeatureStore: could not retrieve #{key} from Redis in '#{kind[:namespace]}', with error: #{e}" } nil end end @@ -108,10 +108,10 @@ def get(kind, key) end end if f.nil? - @logger.debug("RedisFeatureStore: #{key} not found in '#{kind[:namespace]}'") + @logger.debug { "RedisFeatureStore: #{key} not found in '#{kind[:namespace]}'" } nil elsif f[:deleted] - @logger.debug("RedisFeatureStore: #{key} was deleted in '#{kind[:namespace]}', returning nil") + @logger.debug { "RedisFeatureStore: #{key} was deleted in '#{kind[:namespace]}', returning nil" } nil else f @@ -124,7 +124,7 @@ def all(kind) begin hashfs = redis.hgetall(items_key(kind)) rescue => e - @logger.error("RedisFeatureStore: could not retrieve all '#{kind[:namespace]}' items from Redis with error: #{e}; returning none") + @logger.error { "RedisFeatureStore: could not retrieve all '#{kind[:namespace]}' items from Redis with error: #{e}; returning none" } hashfs = {} end hashfs.each do |k, jsonItem| @@ -169,7 +169,7 @@ def init(all_data) end end @inited.set(true) - @logger.info("RedisFeatureStore: initialized with #{count} items") + @logger.info { "RedisFeatureStore: initialized with #{count} items" } end def upsert(kind, item) @@ -219,7 +219,7 @@ def get_redis(kind, redis, key) json_item = redis.hget(items_key(kind), key) JSON.parse(json_item, symbolize_names: true) if json_item rescue => e - @logger.error("RedisFeatureStore: could not retrieve #{key} from Redis, error: #{e}") + @logger.error { "RedisFeatureStore: could not retrieve #{key} from Redis, error: #{e}" } nil end end @@ -232,7 +232,7 @@ def put_redis_and_cache(kind, redis, key, item) begin redis.hset(items_key(kind), key, item.to_json) rescue => e - @logger.error("RedisFeatureStore: could not store #{key} in Redis, error: #{e}") + @logger.error { "RedisFeatureStore: could not store #{key} in Redis, error: #{e}" } end put_cache(kind, key.to_sym, item) end diff --git a/lib/ldclient-rb/requestor.rb b/lib/ldclient-rb/requestor.rb index 27ce822e..abaab854 100644 --- a/lib/ldclient-rb/requestor.rb +++ b/lib/ldclient-rb/requestor.rb @@ -42,20 +42,20 @@ def make_request(path) end end - @config.logger.debug("[LDClient] Got response from uri: #{uri}\n\tstatus code: #{res.status}\n\theaders: #{res.headers}\n\tbody: #{res.body}") + @config.logger.debug { "[LDClient] Got response from uri: #{uri}\n\tstatus code: #{res.status}\n\theaders: #{res.headers}\n\tbody: #{res.body}" } if res.status == 401 - @config.logger.error("[LDClient] Invalid SDK key") + @config.logger.error { "[LDClient] Invalid SDK key" } raise InvalidSDKKeyError end if res.status == 404 - @config.logger.error("[LDClient] Resource not found") + @config.logger.error { "[LDClient] Resource not found" } return nil end if res.status < 200 || res.status >= 300 - @config.logger.error("[LDClient] Unexpected status code #{res.status}") + @config.logger.error { "[LDClient] Unexpected status code #{res.status}" } return nil end diff --git a/lib/ldclient-rb/stream.rb b/lib/ldclient-rb/stream.rb index 1986abf7..4ec1052a 100644 --- a/lib/ldclient-rb/stream.rb +++ b/lib/ldclient-rb/stream.rb @@ -33,7 +33,7 @@ def initialized? def start return unless @started.make_true - @config.logger.info("[LDClient] Initializing stream connection") + @config.logger.info { "[LDClient] Initializing stream connection" } headers = { @@ -48,9 +48,9 @@ def start conn.on(INDIRECT_PUT) { |message| process_message(message, INDIRECT_PUT) } conn.on(INDIRECT_PATCH) { |message| process_message(message, INDIRECT_PATCH) } conn.on_error { |err| - @config.logger.error("[LDClient] Unexpected status code #{err[:status_code]} from streaming connection") + @config.logger.error { "[LDClient] Unexpected status code #{err[:status_code]} from streaming connection" } if err[:status_code] == 401 - @config.logger.error("[LDClient] Received 401 error, no further streaming connection will be made since SDK key is invalid") + @config.logger.error { "[LDClient] Received 401 error, no further streaming connection will be made since SDK key is invalid" } stop end } @@ -60,21 +60,21 @@ def start def stop if @stopped.make_true @es.close - @config.logger.info("[LDClient] Stream connection stopped") + @config.logger.info { "[LDClient] Stream connection stopped" } end end def stop if @stopped.make_true @es.close - @config.logger.info("[LDClient] Stream connection stopped") + @config.logger.info { "[LDClient] Stream connection stopped" } end end private def process_message(message, method) - @config.logger.debug("[LDClient] Stream received #{method} message: #{message.data}") + @config.logger.debug { "[LDClient] Stream received #{method} message: #{message.data}" } if method == PUT message = JSON.parse(message.data, symbolize_names: true) @feature_store.init({ @@ -82,7 +82,7 @@ def process_message(message, method) SEGMENTS => message[:data][:segments] }) @initialized.make_true - @config.logger.info("[LDClient] Stream initialized") + @config.logger.info { "[LDClient] Stream initialized" } elsif method == PATCH message = JSON.parse(message.data, symbolize_names: true) for kind in [FEATURES, SEGMENTS] @@ -108,7 +108,7 @@ def process_message(message, method) SEGMENTS => all_data[:segments] }) @initialized.make_true - @config.logger.info("[LDClient] Stream initialized (via indirect message)") + @config.logger.info { "[LDClient] Stream initialized (via indirect message)" } elsif method == INDIRECT_PATCH key = key_for_path(FEATURES, message.data) if key @@ -120,7 +120,7 @@ def process_message(message, method) end end else - @config.logger.warn("[LDClient] Unknown message received: #{method}") + @config.logger.warn { "[LDClient] Unknown message received: #{method}" } end end