class MemoryTracker::Stores::UrlLogfileStore

Public Class Methods

new(opts) click to toggle source
# File lib/memory_tracker/stores/url_logfile_store.rb, line 6
def initialize(opts)
  logger_class = opts.fetch(:logger_class, 'Logger')
  filename     = opts.fetch(:filename, "#{Rails.root}/log/memtracker_urls.log")

  @logger = logger_class.constantize.new(filename)
  if @logger.respond_to?(:formatter)
    @logger.formatter = proc do |severity, datetime, progname, msg|
      "#{msg}\n"
    end
  end
end

Public Instance Methods

push(request) click to toggle source
# File lib/memory_tracker/stores/url_logfile_store.rb, line 18
def push(request)
  @request = request
  write_request_log
end
stats() click to toggle source
# File lib/memory_tracker/stores/url_logfile_store.rb, line 23
def stats
end

Private Instance Methods

logline() click to toggle source
# File lib/memory_tracker/stores/url_logfile_store.rb, line 32
def logline
  pid = Process.pid

  end_gcstats   = @request.end_gcstat
  start_gcstats = @request.start_gcstat
  delta_gcstats = @request.gcstat_delta.stats

  log_msg = "#{Time.now.localtime.strftime("%m-%d %H:%M:%S")} pid:#{'%05d' % pid}"
  log_msg << " rss=#{'%6.2f' % end_gcstats[:rss]}"
  log_msg << " vsize=#{'%6.2f' % end_gcstats[:vsize]}"

  if (end_gcstats[:rss] / start_gcstats[:rss] > 1.005) || delta_gcstats[:heap_used] > 0
    log_msg << " *** #{@request.gcstat_delta.custom.inspect}"
  end

  log_msg << " #{@request.path}"
end
write_request_log() click to toggle source
# File lib/memory_tracker/stores/url_logfile_store.rb, line 28
def write_request_log
  @logger.info logline
end