class MemoryTracker::Stores::GcstatLogfileStore

Constants

COLUMNS

Public Class Methods

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

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

  @num_lines = 0
end

Public Instance Methods

push(request) click to toggle source
# File lib/memory_tracker/stores/gcstat_logfile_store.rb, line 22
def push(request)
  @request = request

  write_header if @num_lines % 1000 == 0
  write_request_log
  @num_lines += 1
end
stats() click to toggle source
# File lib/memory_tracker/stores/gcstat_logfile_store.rb, line 30
def stats
end

Private Instance Methods

logline() click to toggle source
# File lib/memory_tracker/stores/gcstat_logfile_store.rb, line 43
def logline
  logline = "#{@request.controller}##{@request.action},"
  logline << @request.end_gcstat.ordered_values(COLUMNS).join(',')
end
write_header() click to toggle source
# File lib/memory_tracker/stores/gcstat_logfile_store.rb, line 35
def write_header
  @logger.info "##{COLUMNS.join(',')}"
end
write_request_log() click to toggle source
# File lib/memory_tracker/stores/gcstat_logfile_store.rb, line 39
def write_request_log
  @logger.info "#{Time.now.to_i},#{logline}"
end