我有一個apache日誌我正在尋找過濾HTTP狀態代碼。因爲我的ruby程序沒有返回正確的數字,所以我手動完成了數學運算。我也打算使用這個相同的代碼,可能通過訪問的IP和URL來輸出vitsits的頻率,但是如果我不能讓我的代碼工作,則不會。Ruby:過濾HTTP狀態的Apache日誌和它們發生的百分比
繼承人我得到了什麼
class Numeric
def percent_of(n)
self.to_f/n.to_f * 100.0
end
end
stat_hash = Hash.new(0)
url_hash = Hash.new(0)
ip_hash = Hash.new(0)
#lineArray= Array.new()
file = File.open("./test_log", 'r')
total = 0
#load hash
file.each_line do |line|
total += 1
lnarr = line.chomp.split #Split is messed up needs to split to array first i think then hash from array similar to Lab 10
#Array needs to split to {IP,Date/time, URL, Status, size}
#http://httpd.apache.org/docs/1.3/logs.html
stat_hash[lnarr[-2]] += 1
url_hash[lnarr[-4]] += 1
ip_hash[lnarr[0]] +=1
end
for i in 0..stat_hash.length-1 do
percent = stat_hash.percent_of(total) #current equation will not work. Hash does populate with the http status do but math
#does not output any average. returns undefined method but method is defined at top.
status = stat_hash[i]
end
puts total
#puts (stat_hash[i]/total)
stat_hash.sort.each { |status| puts "#{status}:"+ percent}
我對運行測試日誌可以在這裏找到: http://dl.dropbox.com/u/71927/test_log
我手動完成它,我期待
200:90%
301:8%
401:1%
404:1%
但我得到
200: 97%
301: 1%
304: 8%
403: 2%
這只是他們發生的時間。如果您將它們添加到108中,並且日誌文件中有108行,其中包含狀態代碼。
編輯:作爲後續行動這個問題百分比圍捕,因爲我需要他們使用帶有「.ceil」浮點數據類型的天花板功能,得到了我的數據在寫入命令來分析具體數據與optparser
這是相當容易的工作,爲我的代碼。我之前嘗試過類似的方式,但無法通過ruby發現「可接受」的方式獲得語法。我的變量可能會使用一些關於描述性的工作,但由於這是一個粗略的副本,我可能會在所有工作後稍後重新命名。非常感謝。 – 2012-03-25 23:42:38