request-log-analyzer 1.2.6 → 1.2.7
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/request_log_analyzer/file_format/apache.rb +46 -0
- data/lib/request_log_analyzer/source/log_parser.rb +8 -9
- data/lib/request_log_analyzer.rb +1 -1
- data/request-log-analyzer.gemspec +3 -3
- data/spec/fixtures/apache.log +5 -0
- data/spec/unit/file_format/apache_format_spec.rb +35 -0
- data/spec/unit/file_format/merb_format_spec.rb +1 -1
- data/spec/unit/file_format/rails_format_spec.rb +2 -2
- data/tasks/github-gem.rake +22 -5
- metadata +7 -3
@@ -0,0 +1,46 @@
|
|
1
|
+
# 125.76.230.10 - - [02/Sep/2009:03:33:46 +0200] "GET /cart/install.txt HTTP/1.1" 404 214 "-" "Toata dragostea mea pentru diavola"
|
2
|
+
# 125.76.230.10 - - [02/Sep/2009:03:33:47 +0200] "GET /store/install.txt HTTP/1.1" 404 215 "-" "Toata dragostea mea pentru diavola"
|
3
|
+
# 10.0.1.1 - - [02/Sep/2009:05:08:33 +0200] "GET / HTTP/1.1" 200 30 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9"
|
4
|
+
# 10.0.1.1 - - [02/Sep/2009:06:41:51 +0200] "GET / HTTP/1.1" 200 30 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9"
|
5
|
+
# 69.41.0.45 - - [02/Sep/2009:12:02:40 +0200] "GET //phpMyAdmin/ HTTP/1.1" 404 209 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"
|
6
|
+
|
7
|
+
module RequestLogAnalyzer::FileFormat
|
8
|
+
|
9
|
+
class Apache < Base
|
10
|
+
|
11
|
+
# 125.76.230.10 - - [02/Sep/2009:03:33:46 +0200] "GET /cart/install.txt HTTP/1.1" 404 214 "-" "Toata dragostea mea pentru diavola"
|
12
|
+
line_definition :access do |line|
|
13
|
+
line.header = true
|
14
|
+
line.footer = true
|
15
|
+
line.regexp = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) - - \[([^\]]{26})\] "([A-Z]+) ([^\s]+) HTTP\/(\d+(?:\.\d+)*)" (\d+) \d+ "-" "([^"]+)"/
|
16
|
+
line.captures << { :name => :ip_address, :type => :string } \
|
17
|
+
<< { :name => :timestamp, :type => :timestamp } \
|
18
|
+
<< { :name => :method, :type => :string } \
|
19
|
+
<< { :name => :path, :type => :string } \
|
20
|
+
<< { :name => :http_version, :type => :string } \
|
21
|
+
<< { :name => :status, :type => :integer } \
|
22
|
+
<< { :name => :user_agent, :type => :string }
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
report do |analyze|
|
27
|
+
analyze.timespan :line_type => :access
|
28
|
+
analyze.hourly_spread :line_type => :access
|
29
|
+
analyze.frequency :category => :method, :amount => 20, :title => "HTTP methods frequency"
|
30
|
+
analyze.frequency :category => :path, :amount => 20, :title => "Most popular paths"
|
31
|
+
end
|
32
|
+
|
33
|
+
# Define a custom Request class for the Apache file format to speed up timestamp handling.
|
34
|
+
class Request < RequestLogAnalyzer::Request
|
35
|
+
|
36
|
+
MONTHS = {'Jan' => '01', 'Feb' => '02', 'Mar' => '03', 'Apr' => '04', 'May' => '05', 'Jun' => '06',
|
37
|
+
'Jul' => '07', 'Aug' => '08', 'Sep' => '09', 'Oct' => '10', 'Nov' => '11', 'Dec' => '12' }
|
38
|
+
|
39
|
+
# Do not use DateTime.parse
|
40
|
+
def convert_timestamp(value, definition)
|
41
|
+
d = /^(\d{2})\/(\w{3})\/(\d{4}):(\d{2}):(\d{2}):(\d{2})/.match(value).captures
|
42
|
+
"#{d[2]}#{MONTHS[d[1]]}#{d[0]}#{d[3]}#{d[4]}#{d[5]}".to_i
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -125,13 +125,13 @@ module RequestLogAnalyzer::Source
|
|
125
125
|
def parse_io(io, options = {}, &block) # :yields: request
|
126
126
|
|
127
127
|
@current_io = io
|
128
|
+
lineno = 0
|
128
129
|
@current_io.each_line do |line|
|
129
|
-
|
130
130
|
@progress_handler.call(:progress, @current_io.pos) if @progress_handler && @current_io.kind_of?(File)
|
131
131
|
|
132
132
|
request_data = nil
|
133
133
|
file_format.line_definitions.each do |line_type, definition|
|
134
|
-
request_data = definition.matches(line,
|
134
|
+
request_data = definition.matches(line, lineno, self)
|
135
135
|
break if request_data
|
136
136
|
end
|
137
137
|
|
@@ -139,6 +139,7 @@ module RequestLogAnalyzer::Source
|
|
139
139
|
@parsed_lines += 1
|
140
140
|
update_current_request(request_data, &block)
|
141
141
|
end
|
142
|
+
lineno += 1
|
142
143
|
end
|
143
144
|
|
144
145
|
warn(:unfinished_request_on_eof, "End of file reached, but last request was not completed!") unless @current_request.nil?
|
@@ -197,7 +198,7 @@ module RequestLogAnalyzer::Source
|
|
197
198
|
# <tt>request_data</tt>:: A hash of data that was parsed from the last line.
|
198
199
|
def update_current_request(request_data, &block) # :yields: request
|
199
200
|
if header_line?(request_data)
|
200
|
-
|
201
|
+
if @current_request
|
201
202
|
case options[:parse_strategy]
|
202
203
|
when 'assume-correct'
|
203
204
|
handle_request(@current_request, &block)
|
@@ -207,15 +208,13 @@ module RequestLogAnalyzer::Source
|
|
207
208
|
warn(:unclosed_request, "Encountered header line (#{request_data[:line_definition].name.inspect}), but previous request was not closed!")
|
208
209
|
@current_request = nil # remove all data that was parsed, skip next request as well.
|
209
210
|
end
|
210
|
-
|
211
|
-
|
212
|
-
@current_request = nil
|
213
|
-
end
|
211
|
+
elsif footer_line?(request_data)
|
212
|
+
handle_request(@file_format.request(request_data), &block)
|
214
213
|
else
|
215
|
-
@current_request = @file_format.request(request_data)
|
214
|
+
@current_request = @file_format.request(request_data)
|
216
215
|
end
|
217
216
|
else
|
218
|
-
|
217
|
+
if @current_request
|
219
218
|
@current_request << request_data
|
220
219
|
if footer_line?(request_data)
|
221
220
|
handle_request(@current_request, &block) # yield @current_request
|
data/lib/request_log_analyzer.rb
CHANGED
@@ -11,7 +11,7 @@ module RequestLogAnalyzer
|
|
11
11
|
|
12
12
|
# The current version of request-log-analyzer.
|
13
13
|
# This will be diplayed in output reports etc.
|
14
|
-
VERSION = "1.2.
|
14
|
+
VERSION = "1.2.7"
|
15
15
|
|
16
16
|
# Loads constants in the RequestLogAnalyzer namespace using self.load_default_class_file(base, const)
|
17
17
|
# <tt>const</tt>:: The constant that is not yet loaded in the RequestLogAnalyzer namespace. This should be passed as a string or symbol.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'request-log-analyzer'
|
3
|
-
s.version = "1.2.
|
3
|
+
s.version = "1.2.7"
|
4
4
|
s.date = "2009-09-02"
|
5
5
|
|
6
6
|
s.rubyforge_project = 'r-l-a'
|
@@ -31,6 +31,6 @@ Gem::Specification.new do |s|
|
|
31
31
|
s.email = ['willem@railsdoctors.com', 'bart@railsdoctors.com']
|
32
32
|
s.homepage = 'http://railsdoctors.com'
|
33
33
|
|
34
|
-
s.files = %w(spec/unit/filter/anonymize_filter_spec.rb lib/request_log_analyzer/line_definition.rb lib/request_log_analyzer/output/html.rb lib/request_log_analyzer/controller.rb spec/fixtures/rails_22_cached.log lib/request_log_analyzer/file_format/rails_development.rb spec/lib/macros.rb spec/fixtures/merb_prefixed.log tasks/request_log_analyzer.rake spec/unit/file_format/file_format_api_spec.rb spec/integration/command_line_usage_spec.rb spec/fixtures/decompression.log.bz2 lib/request_log_analyzer/log_processor.rb lib/request_log_analyzer/tracker.rb lib/request_log_analyzer/filter.rb spec/fixtures/rails_unordered.log bin/request-log-analyzer request-log-analyzer.gemspec DESIGN.rdoc spec/unit/filter/timespan_filter_spec.rb lib/request_log_analyzer/filter/field.rb lib/request_log_analyzer/tracker/frequency.rb spec/fixtures/decompression.log.gz spec/fixtures/decompression.log spec/lib/matchers.rb spec/fixtures/test_order.log lib/request_log_analyzer/output/fixed_width.rb lib/request_log_analyzer/filter/anonymize.rb spec/lib/testing_format.rb lib/request_log_analyzer/tracker/timespan.rb lib/request_log_analyzer/aggregator.rb lib/cli/progressbar.rb README.rdoc spec/fixtures/merb.log lib/request_log_analyzer/tracker/hourly_spread.rb .gitignore spec/unit/tracker/tracker_api_spec.rb spec/unit/tracker/duration_tracker_spec.rb lib/request_log_analyzer/aggregator/echo.rb spec/unit/controller/log_processor_spec.rb lib/request_log_analyzer.rb Rakefile spec/
|
35
|
-
s.test_files = %w(spec/unit/filter/anonymize_filter_spec.rb spec/unit/file_format/file_format_api_spec.rb spec/integration/command_line_usage_spec.rb spec/unit/filter/timespan_filter_spec.rb spec/unit/tracker/tracker_api_spec.rb spec/unit/tracker/duration_tracker_spec.rb spec/unit/controller/log_processor_spec.rb spec/unit/filter/filter_spec.rb spec/unit/filter/field_filter_spec.rb spec/unit/tracker/timespan_tracker_spec.rb spec/unit/tracker/hourly_spread_spec.rb spec/unit/file_format/merb_format_spec.rb spec/unit/file_format/line_definition_spec.rb spec/unit/controller/controller_spec.rb spec/unit/source/request_spec.rb spec/unit/source/log_parser_spec.rb spec/unit/aggregator/database_spec.rb spec/unit/aggregator/summarizer_spec.rb spec/unit/tracker/frequency_tracker_spec.rb spec/unit/file_format/rails_format_spec.rb)
|
34
|
+
s.files = %w(spec/unit/filter/anonymize_filter_spec.rb lib/request_log_analyzer/line_definition.rb lib/request_log_analyzer/output/html.rb lib/request_log_analyzer/controller.rb spec/fixtures/rails_22_cached.log lib/request_log_analyzer/file_format/rails_development.rb spec/lib/macros.rb spec/fixtures/merb_prefixed.log tasks/request_log_analyzer.rake spec/unit/file_format/file_format_api_spec.rb spec/unit/file_format/apache_format_spec.rb spec/integration/command_line_usage_spec.rb spec/fixtures/decompression.log.bz2 lib/request_log_analyzer/log_processor.rb lib/request_log_analyzer/tracker.rb lib/request_log_analyzer/filter.rb spec/fixtures/rails_unordered.log bin/request-log-analyzer request-log-analyzer.gemspec DESIGN.rdoc spec/unit/filter/timespan_filter_spec.rb lib/request_log_analyzer/filter/field.rb lib/request_log_analyzer/tracker/frequency.rb spec/fixtures/decompression.log.gz spec/fixtures/decompression.log spec/lib/matchers.rb spec/fixtures/test_order.log lib/request_log_analyzer/output/fixed_width.rb lib/request_log_analyzer/filter/anonymize.rb spec/lib/testing_format.rb lib/request_log_analyzer/tracker/timespan.rb lib/request_log_analyzer/aggregator.rb lib/cli/progressbar.rb README.rdoc spec/fixtures/merb.log lib/request_log_analyzer/tracker/hourly_spread.rb .gitignore spec/unit/tracker/tracker_api_spec.rb spec/unit/tracker/duration_tracker_spec.rb lib/request_log_analyzer/aggregator/echo.rb spec/unit/controller/log_processor_spec.rb spec/spec_helper.rb lib/request_log_analyzer.rb Rakefile spec/unit/filter/filter_spec.rb lib/request_log_analyzer/aggregator/summarizer.rb lib/request_log_analyzer/file_format/rails.rb spec/fixtures/test_language_combined.log spec/fixtures/decompression.tar.gz spec/unit/filter/field_filter_spec.rb spec/spec.opts lib/request_log_analyzer/aggregator/database.rb lib/request_log_analyzer/filter/timespan.rb lib/request_log_analyzer/source/log_parser.rb spec/fixtures/decompression.tgz spec/unit/tracker/timespan_tracker_spec.rb spec/unit/tracker/hourly_spread_spec.rb spec/fixtures/apache.log spec/fixtures/header_and_footer.log lib/cli/tools.rb lib/request_log_analyzer/file_format/merb.rb spec/fixtures/multiple_files_1.log spec/unit/file_format/merb_format_spec.rb spec/unit/file_format/line_definition_spec.rb lib/request_log_analyzer/source.rb lib/request_log_analyzer/request.rb spec/unit/controller/controller_spec.rb lib/request_log_analyzer/output.rb lib/request_log_analyzer/file_format/apache.rb spec/lib/helpers.rb spec/fixtures/rails_1x.log spec/lib/mocks.rb spec/fixtures/decompression.log.zip spec/unit/source/request_spec.rb spec/unit/source/log_parser_spec.rb spec/unit/aggregator/database_spec.rb spec/fixtures/test_file_format.log lib/request_log_analyzer/source/database.rb tasks/github-gem.rake lib/request_log_analyzer/tracker/duration.rb lib/request_log_analyzer/file_format.rb spec/unit/aggregator/summarizer_spec.rb spec/fixtures/rails_22.log spec/fixtures/multiple_files_2.log spec/fixtures/syslog_1x.log LICENSE spec/unit/tracker/frequency_tracker_spec.rb spec/unit/file_format/rails_format_spec.rb lib/cli/command_line_arguments.rb)
|
35
|
+
s.test_files = %w(spec/unit/filter/anonymize_filter_spec.rb spec/unit/file_format/file_format_api_spec.rb spec/unit/file_format/apache_format_spec.rb spec/integration/command_line_usage_spec.rb spec/unit/filter/timespan_filter_spec.rb spec/unit/tracker/tracker_api_spec.rb spec/unit/tracker/duration_tracker_spec.rb spec/unit/controller/log_processor_spec.rb spec/unit/filter/filter_spec.rb spec/unit/filter/field_filter_spec.rb spec/unit/tracker/timespan_tracker_spec.rb spec/unit/tracker/hourly_spread_spec.rb spec/unit/file_format/merb_format_spec.rb spec/unit/file_format/line_definition_spec.rb spec/unit/controller/controller_spec.rb spec/unit/source/request_spec.rb spec/unit/source/log_parser_spec.rb spec/unit/aggregator/database_spec.rb spec/unit/aggregator/summarizer_spec.rb spec/unit/tracker/frequency_tracker_spec.rb spec/unit/file_format/rails_format_spec.rb)
|
36
36
|
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
125.76.230.10 - - [02/Sep/2009:03:33:46 +0200] "GET /cart/install.txt HTTP/1.1" 404 214 "-" "Toata dragostea mea pentru diavola"
|
2
|
+
125.76.230.10 - - [02/Sep/2009:03:33:47 +0200] "GET /store/install.txt HTTP/1.1" 404 215 "-" "Toata dragostea mea pentru diavola"
|
3
|
+
10.0.1.1 - - [02/Sep/2009:05:08:33 +0200] "GET / HTTP/1.1" 200 30 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9"
|
4
|
+
10.0.1.1 - - [02/Sep/2009:06:41:51 +0200] "GET / HTTP/1.1" 200 30 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9"
|
5
|
+
69.41.0.45 - - [02/Sep/2009:12:02:40 +0200] "GET //phpMyAdmin/ HTTP/1.1" 404 209 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe RequestLogAnalyzer::FileFormat::Apache do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@file_format = RequestLogAnalyzer::FileFormat.load(:apache)
|
7
|
+
@log_parser = RequestLogAnalyzer::Source::LogParser.new(@file_format)
|
8
|
+
@sample = '69.41.0.45 - - [02/Sep/2009:12:02:40 +0200] "GET //phpMyAdmin/ HTTP/1.1" 404 209 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"'
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should have a valid language definitions" do
|
12
|
+
@file_format.should be_valid
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should parse a valid access log line" do
|
16
|
+
@file_format.line_definitions[:access].matches(@sample, 1, nil).should be_kind_of(Hash)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should read the correct values from a valid access log line" do
|
20
|
+
@log_parser.parse_io(@sample) do |request|
|
21
|
+
request[:ip_address].should == '69.41.0.45'
|
22
|
+
request[:timestamp].should == 20090902120240
|
23
|
+
request[:status].should == 404
|
24
|
+
request[:method].should == 'GET'
|
25
|
+
request[:http_version].should == '1.1'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should parse 5 request from fixture access log" do
|
30
|
+
counter = mock('counter')
|
31
|
+
counter.should_receive(:hit!).exactly(5).times
|
32
|
+
@log_parser.parse_file(log_fixture(:apache)) { counter.hit! }
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
2
|
|
3
|
-
describe RequestLogAnalyzer::
|
3
|
+
describe RequestLogAnalyzer::FileFormat::Merb do
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
@log_parser = RequestLogAnalyzer::Source::LogParser.new(RequestLogAnalyzer::FileFormat.load(:merb))
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
2
|
|
3
|
-
describe RequestLogAnalyzer::
|
3
|
+
describe RequestLogAnalyzer::FileFormat::Rails do
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
@log_parser = RequestLogAnalyzer::Source::LogParser.new(
|
@@ -77,7 +77,7 @@ describe RequestLogAnalyzer::Source::LogParser, "Rails" do
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
-
describe RequestLogAnalyzer::FileFormat::RailsDevelopment
|
80
|
+
describe RequestLogAnalyzer::FileFormat::RailsDevelopment do
|
81
81
|
|
82
82
|
before(:each) do
|
83
83
|
@file_format = RequestLogAnalyzer::FileFormat.load(:rails_development)
|
data/tasks/github-gem.rake
CHANGED
@@ -114,14 +114,20 @@ module GithubGem
|
|
114
114
|
checks = [:check_current_branch, :check_clean_status, :check_not_diverged, :check_version]
|
115
115
|
checks.unshift('spec:basic') if has_specs?
|
116
116
|
checks.unshift('test:basic') if has_tests?
|
117
|
-
|
117
|
+
checks.push << [:check_rubyforge] if gemspec.rubyforge_project
|
118
|
+
|
118
119
|
desc "Perform all checks that would occur before a release"
|
119
120
|
task(:release_checks => checks)
|
120
121
|
|
122
|
+
release_tasks = [:release_checks, :set_version, :build, :github_release]
|
123
|
+
release_tasks << [:rubyforge_release] if gemspec.rubyforge_project
|
124
|
+
|
121
125
|
desc "Release a new verison of the gem"
|
122
|
-
task(:release =>
|
126
|
+
task(:release => release_tasks) { release_task }
|
123
127
|
|
124
|
-
task(:
|
128
|
+
task(:check_rubyforge) { check_rubyforge_task }
|
129
|
+
task(:rubyforge_release) { rubyforge_release_task }
|
130
|
+
task(:github_release => [:commit_modified_files, :tag_version]) { github_release_task }
|
125
131
|
task(:tag_version) { tag_version_task }
|
126
132
|
task(:commit_modified_files) { commit_modified_files_task }
|
127
133
|
end
|
@@ -163,7 +169,7 @@ module GithubGem
|
|
163
169
|
end
|
164
170
|
|
165
171
|
def check_clean_status_task
|
166
|
-
raise "The current working copy contains modifications" if git.status.changed.any?
|
172
|
+
#raise "The current working copy contains modifications" if git.status.changed.any?
|
167
173
|
end
|
168
174
|
|
169
175
|
def check_current_branch_task
|
@@ -185,10 +191,21 @@ module GithubGem
|
|
185
191
|
git.add_tag("#{gemspec.name}-#{gemspec.version}")
|
186
192
|
end
|
187
193
|
|
188
|
-
def
|
194
|
+
def github_release_task
|
189
195
|
git.push(remote, remote_branch, true)
|
190
196
|
end
|
191
197
|
|
198
|
+
def check_rubyforge_task
|
199
|
+
raise "Could not login on rubyforge!" unless `rubyforge login 2>&1`.strip.empty?
|
200
|
+
output = `rubyforge names`.split("\n")
|
201
|
+
raise "Rubyforge group not found!" unless output.any? { |line| %r[^groups\s*\:.*\b#{Regexp.quote(gemspec.rubyforge_project)}\b.*] =~ line }
|
202
|
+
raise "Rubyforge package not found!" unless output.any? { |line| %r[^packages\s*\:.*\b#{Regexp.quote(gemspec.name)}\b.*] =~ line }
|
203
|
+
end
|
204
|
+
|
205
|
+
def rubyforge_release_task
|
206
|
+
sh 'rubyforge', 'add_release', gemspec.rubyforge_project, gemspec.name, gemspec.version, "pgk/#{gemspec.name}-#{gemspec.version}.gem"
|
207
|
+
end
|
208
|
+
|
192
209
|
def release_task
|
193
210
|
puts
|
194
211
|
puts '------------------------------------------------------------'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: request-log-analyzer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Willem van Bergen
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- spec/fixtures/merb_prefixed.log
|
55
55
|
- tasks/request_log_analyzer.rake
|
56
56
|
- spec/unit/file_format/file_format_api_spec.rb
|
57
|
+
- spec/unit/file_format/apache_format_spec.rb
|
57
58
|
- spec/integration/command_line_usage_spec.rb
|
58
59
|
- spec/fixtures/decompression.log.bz2
|
59
60
|
- lib/request_log_analyzer/log_processor.rb
|
@@ -84,9 +85,9 @@ files:
|
|
84
85
|
- spec/unit/tracker/duration_tracker_spec.rb
|
85
86
|
- lib/request_log_analyzer/aggregator/echo.rb
|
86
87
|
- spec/unit/controller/log_processor_spec.rb
|
88
|
+
- spec/spec_helper.rb
|
87
89
|
- lib/request_log_analyzer.rb
|
88
90
|
- Rakefile
|
89
|
-
- spec/spec_helper.rb
|
90
91
|
- spec/unit/filter/filter_spec.rb
|
91
92
|
- lib/request_log_analyzer/aggregator/summarizer.rb
|
92
93
|
- lib/request_log_analyzer/file_format/rails.rb
|
@@ -100,6 +101,7 @@ files:
|
|
100
101
|
- spec/fixtures/decompression.tgz
|
101
102
|
- spec/unit/tracker/timespan_tracker_spec.rb
|
102
103
|
- spec/unit/tracker/hourly_spread_spec.rb
|
104
|
+
- spec/fixtures/apache.log
|
103
105
|
- spec/fixtures/header_and_footer.log
|
104
106
|
- lib/cli/tools.rb
|
105
107
|
- lib/request_log_analyzer/file_format/merb.rb
|
@@ -110,15 +112,16 @@ files:
|
|
110
112
|
- lib/request_log_analyzer/request.rb
|
111
113
|
- spec/unit/controller/controller_spec.rb
|
112
114
|
- lib/request_log_analyzer/output.rb
|
115
|
+
- lib/request_log_analyzer/file_format/apache.rb
|
113
116
|
- spec/lib/helpers.rb
|
114
117
|
- spec/fixtures/rails_1x.log
|
115
118
|
- spec/lib/mocks.rb
|
116
119
|
- spec/fixtures/decompression.log.zip
|
117
120
|
- spec/unit/source/request_spec.rb
|
118
121
|
- spec/unit/source/log_parser_spec.rb
|
122
|
+
- spec/unit/aggregator/database_spec.rb
|
119
123
|
- spec/fixtures/test_file_format.log
|
120
124
|
- lib/request_log_analyzer/source/database.rb
|
121
|
-
- spec/unit/aggregator/database_spec.rb
|
122
125
|
- tasks/github-gem.rake
|
123
126
|
- lib/request_log_analyzer/tracker/duration.rb
|
124
127
|
- lib/request_log_analyzer/file_format.rb
|
@@ -166,6 +169,7 @@ summary: A command line tool to analyze request logs for Rails, Merb and other a
|
|
166
169
|
test_files:
|
167
170
|
- spec/unit/filter/anonymize_filter_spec.rb
|
168
171
|
- spec/unit/file_format/file_format_api_spec.rb
|
172
|
+
- spec/unit/file_format/apache_format_spec.rb
|
169
173
|
- spec/integration/command_line_usage_spec.rb
|
170
174
|
- spec/unit/filter/timespan_filter_spec.rb
|
171
175
|
- spec/unit/tracker/tracker_api_spec.rb
|