我試圖定義方法來解析通過apache日誌文件,並拉IP地址,URL,每小時的請求和錯誤代碼。我已經在方法之外使用了所有的東西,但是當試圖將這些代碼放入方法中時,我總是收到錯誤消息「堆棧層太深」。這是有問題的代碼。Ruby方法變量聲明
class CommonLog
def initialize(logfile)
@logfile = logfile
end
def readfile
@readfile = File.readlines(@logfile).map { |line|
line.split()
}
@readfile = @readfile.to_s.split(" ")
end
def ip_histogram
@ip_count = 0
@readfile.each_index { |index|
if (@readfile[index] =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/)
puts @readfile[index]
puts @ip_count += 1
end
}
end
def url_histogram
url_count = 0
cleaned_file.each_index { |index|
if (cleaned_file[index] =~ /\/{1}(([a-z]{4,})|(\~{1}))\:{0}\S+/)
puts cleaned_file[index]
puts url_count += 1
end
}
end
def requests_per_hour
end
def sorted_list
end
end
my_file = CommonLog.new("test_log")
cleaned_file = my_file.readfile
puts cleaned_file.ip_histogram
您的代碼太長,你的解釋不夠。 「方法」是什麼意思?你是指HTTP方法還是Ruby方法?哪部分代碼是?你可以減少你的代碼,只有相關的代碼保留下來嗎?另外,您是否可以在輸入文件中包含兩到三個示例行,以便我們可以自己測試您的代碼? – Amadan