lib/pilfer/logger.rb in pilfer-0.0.1.pre2 vs lib/pilfer/logger.rb in pilfer-0.0.1.pre3
- old
+ new
@@ -1,60 +1,56 @@
+require 'logger'
require 'pilfer/profile'
module Pilfer
class Logger
- attr_reader :path, :app_root
+ attr_reader :app_root, :logger
- def initialize(path, options = {})
- @path = path
+ def initialize(path_or_io, options = {})
+ @logger = ::Logger.new(path_or_io)
if (app_root = options[:app_root])
app_root += '/' unless app_root[-1] == '/'
@app_root = %r{^#{Regexp.escape(app_root)}}
end
end
def write(profile_data, profile_start)
profile = Pilfer::Profile.new(profile_data, profile_start)
- File.open(path, 'w') do |file|
- print_report_banner file, profile_start
- profile.each do |path, data|
- print_file_banner file, path, data
- print_file_source_with_profile file, path, data
- end
+ print_report_banner profile_start
+ profile.each do |path, data|
+ print_file_banner path, data
+ print_file_source_with_profile path, data
end
end
private
- def print_report_banner(file, profile_start)
- file.puts '#' * 50
- file.puts "# #{profile_start.utc.to_s}"
- file.puts '#' * 50
- file.puts
+ def print_report_banner(profile_start)
+ logger.info "Profile start=#{profile_start.utc.to_s}"
end
- def print_file_banner(file, path, data)
+ def print_file_banner(path, data)
wall = data['wall_time'] / 1000.0
cpu = data['cpu_time'] / 1000.0
- file.puts sprintf("%s wall_time=%.1fms cpu_time=%.1fms",
- strip_app_root(path), wall, cpu)
+ logger.info sprintf("%s wall_time=%.1fms cpu_time=%.1fms",
+ strip_app_root(path), wall, cpu)
end
- def print_file_source_with_profile(file, path, data)
+ def print_file_source_with_profile(path, data)
return unless File.exists?(path)
File.readlines(path).each_with_index do |line_source, index|
+ line_source = line_source.chomp
line_profile = data['lines'][index]
if line_profile && line_profile['calls'] > 0
total = line_profile['wall_time']
- file.puts sprintf("% 8.1fms (% 5d) | %s",
- total/1000.0,
- line_profile['calls'],
- line_source)
+ logger.info sprintf("% 8.1fms (% 5d) | %s",
+ total/1000.0,
+ line_profile['calls'],
+ line_source)
else
- file.puts sprintf(" | %s", line_source)
+ logger.info sprintf(" | %s", line_source)
end
end
- file.puts
end
def strip_app_root(path)
return path unless app_root
path.gsub(app_root, '')