【发布时间】:2015-04-27 02:06:48
【问题描述】:
我正在尝试定义解析 apache 日志文件并提取 IP 地址、URL、每小时请求数和错误代码的方法。我已经在方法之外完成了所有工作,但是在尝试将该代码放入方法时,我不断收到错误消息“堆栈级别太深”。这是有问题的代码。
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 方法?它是代码的哪一部分?你能删减你的代码,只留下相关的代码吗?另外,您能否从输入文件中包含两到三个示例行,以便我们自己测试您的代码?