diff --git a/lib/segment/analytics/logging.rb b/lib/segment/analytics/logging.rb index 20b1a7f..f7aaa63 100644 --- a/lib/segment/analytics/logging.rb +++ b/lib/segment/analytics/logging.rb @@ -2,16 +2,43 @@ module Segment class Analytics + # Wraps an existing logger and adds a prefix to all messages + class PrefixedLogger + def initialize(logger, prefix) + @logger = logger + @prefix = prefix + end + + def debug(msg) + @logger.debug("#{@prefix} #{msg}") + end + + def info(msg) + @logger.info("#{@prefix} #{msg}") + end + + def warn(msg) + @logger.warn("#{@prefix} #{msg}") + end + + def error(msg) + @logger.error("#{@prefix} #{msg}") + end + end + module Logging class << self def logger - @logger ||= if defined?(Rails) - Rails.logger - else - logger = Logger.new STDOUT - logger.progname = 'Segment::Analytics' - logger - end + return @logger if @logger + + base_logger = if defined?(Rails) + Rails.logger + else + logger = Logger.new STDOUT + logger.progname = 'Segment::Analytics' + logger + end + @logger = PrefixedLogger.new(base_logger, '[analytics-ruby]') end attr_writer :logger diff --git a/lib/segment/analytics/request.rb b/lib/segment/analytics/request.rb index 502d8e1..0cdf476 100644 --- a/lib/segment/analytics/request.rb +++ b/lib/segment/analytics/request.rb @@ -90,6 +90,7 @@ def retry_with_backoff(retries_remaining, &block) end if should_retry && (retries_remaining > 1) + logger.debug("Retrying request, #{retries_remaining} retries left") sleep(@backoff_policy.next_interval.to_f / 1000) retry_with_backoff(retries_remaining - 1, &block) else diff --git a/lib/segment/analytics/worker.rb b/lib/segment/analytics/worker.rb index f1c7ef4..7f1a286 100644 --- a/lib/segment/analytics/worker.rb +++ b/lib/segment/analytics/worker.rb @@ -9,6 +9,7 @@ class Analytics class Worker include Segment::Analytics::Utils include Segment::Analytics::Defaults + include Segment::Analytics::Logging # public: Creates a new worker # @@ -44,6 +45,7 @@ def run end end + logger.debug("Sending request for #{@batch.length} items") res = @request.post(@write_key, @batch) @on_error.call(res.status, res.error) unless res.status == 200