日志文件ruby测试

时间:2014-03-31 02:09:36

标签: ruby-on-rails ruby testing logging

我有这个ruby脚本,我在第57行遇到了问题。

请告诉我错误在哪里

#!/usr/bin/ruby

class CommonLog

# init method takes log filename, computes frequency counts
# for ips, urls & statuses
def initialize(log)
f = File.open(log)

@filename = log
@filesize = f.size
@ip_counts = Hash.new(0)
@url_counts = Hash.new(0)
@status_counts = Hash.new(0)

@total_records = 0

f.readlines.each do |line|
tokens = line.split(' ')

ip = tokens[0]
url = tokens[-4]
status = tokens[-2]

@ip_counts[ip] += 1
@url_counts[url] += 1
@status_counts[status] += 1
@total_records += 1
end

f.close
end

# displays filename and bytesize
def file_info
"Filename: #{@filename}, Bytes Transferred: #{@filesize}"
end

# draws ip histogram
def ip_hist
@ip_counts.each do |ip, freq|
puts "#{ip}: #{'*'*freq}"
end
puts file_info
end

# draws url histogram
def url_hist
@url_counts.each do |url,freq|
puts "#{url} #{'*'*freq}"
end
puts file_info
end

# draws list of statuses
def status_list
msg = ""
sorted_status_codes = @status_counts.keys.sort
sorted_status_codes do |code|
count = @status_counts[code]
pct = ((count.to_f/@total_records)*100).to_i
msg += "#{code}: #{percentage}%\n"
end
puts msg
puts file_info
end

end

def test
log = CommonLog.new('**TEST LOG FILE PATH**')
log.ip_histogram
log.url_histogram
log.status_codes
end

test()

提前感谢您的帮助..非常感谢您的帮助.. 日志文件在服务器上,因此我删除了路径,因为您将无法访问它..

以下是我运行文件后收到的消息

    /1.rb:57:in `status_list': undefined method `keys' for nil:NilClass (NoMethodError)
    from ./1.rb:73:in `test'
      from ./1.rb:75:in `<main>'

0 个答案:

没有答案