rawk_log 2.2.2 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/rawk_log/command.rb +32 -28
- data/lib/rawk_log/stat.rb +4 -5
- data/lib/rawk_log/version.rb +1 -1
- data/test/empty_test.rb +1 -1
- data/test/examples/rails23.log +1 -0
- data/test/mixed_rails40_test.rb +1 -1
- data/test/rails23_test.rb +1 -1
- data/test/rails40_test.rb +1 -1
- data/test/unknown_test.rb +1 -1
- metadata +1 -1
data/lib/rawk_log/command.rb
CHANGED
@@ -32,6 +32,7 @@ module RawkLog
|
|
32
32
|
def initialize(args)
|
33
33
|
@start_time = Time.now
|
34
34
|
build_arg_hash(args)
|
35
|
+
@new_log_format = nil
|
35
36
|
end
|
36
37
|
|
37
38
|
def run
|
@@ -112,57 +113,60 @@ module RawkLog
|
|
112
113
|
|
113
114
|
# Old: Completed in 0.45141 (2 reqs/sec) | Rendering: 0.25965 (57%) | DB: 0.06300 (13%) | 200 OK [http://localhost/jury/proposal/312]
|
114
115
|
# New: Completed in 100ms (View: 40, DB: 4)
|
115
|
-
|
116
|
-
@new_log_format = $_ =~ /Completed in \d+ms/
|
116
|
+
if @new_log_format.nil?
|
117
|
+
@new_log_format = ! ($_ =~ /Completed in \d+ms/)
|
117
118
|
end
|
118
119
|
|
119
120
|
if @new_log_format
|
120
121
|
if @db_time
|
121
|
-
time_string = $_[/DB: \d+/]
|
122
|
+
time_string = $_[/DB: \d+\.\d+/]
|
122
123
|
elsif @render_time
|
123
|
-
time_string = $_[/View: \d+/]
|
124
|
+
time_string = $_[/(View|Rendering): \d+\.\d+/]
|
124
125
|
else
|
125
|
-
time_string = $_[/Completed in \d
|
126
|
+
time_string = $_[/Completed in \d+\.\d+/]
|
126
127
|
end
|
127
|
-
time_string = time_string[/\d+/] if time_string
|
128
|
-
time = time_string.
|
128
|
+
time_string = time_string[/\d+\.\d+/] if time_string
|
129
|
+
time = time_string.to_f if time_string
|
129
130
|
else
|
130
131
|
if @db_time
|
131
|
-
time_string = $_[/DB: \d
|
132
|
+
time_string = $_[/DB: \d+/]
|
132
133
|
elsif @render_time
|
133
|
-
time_string = $_[/
|
134
|
+
time_string = $_[/View: \d+/]
|
134
135
|
else
|
135
|
-
time_string = $_[/Completed in \d
|
136
|
+
time_string = $_[/Completed in \d+ms/]
|
136
137
|
end
|
137
|
-
time_string = time_string[/\d
|
138
|
-
time = time_string.
|
138
|
+
time_string = time_string[/\d+/] if time_string
|
139
|
+
time = time_string.to_i if time_string
|
139
140
|
end
|
141
|
+
|
140
142
|
|
141
143
|
|
142
144
|
#if pids are not specified then we use the url for hashing
|
143
145
|
#the below regexp turns "[http://spongecell.com/calendar/view/bob]" to "/calendar/view"
|
144
146
|
unless key
|
147
|
+
uri = $_[/\[[^\]]+\]/]
|
148
|
+
if uri and uri != ''
|
149
|
+
key = if @force_url_use
|
150
|
+
(uri.gsub(/\S+\/\/(\w|\.)*/,''))[/[^\?\]]*/]
|
151
|
+
else
|
152
|
+
data = uri.gsub(/\S+\/\/(\w|\.)*/,'')
|
153
|
+
s = data.gsub(/(\?.*)|\]$/,'').split("/")
|
145
154
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
if is_id?(word.to_s)
|
154
|
-
keywords << '{ID}'
|
155
|
-
elsif !word.to_s.empty?
|
156
|
-
keywords << word.to_s
|
155
|
+
keywords = s.inject([]) do |keywords, word|
|
156
|
+
if is_id?(word.to_s)
|
157
|
+
keywords << '{ID}'
|
158
|
+
elsif !word.to_s.empty?
|
159
|
+
keywords << word.to_s
|
160
|
+
end
|
161
|
+
keywords
|
157
162
|
end
|
158
|
-
keywords
|
163
|
+
keywords[-1] = '{filename}' if ! keywords.empty? and is_filename?(keywords[-1])
|
164
|
+
k = "/#{keywords.join("/")}"
|
159
165
|
end
|
160
|
-
keywords[-1] = '{filename}' if ! keywords.empty? and is_filename?(keywords[-1])
|
161
|
-
k = "/#{keywords.join("/")}"
|
162
166
|
end
|
163
167
|
end
|
164
168
|
|
165
|
-
if (@from.nil? or @from <= date) and (@to.nil? or @to >= date) # date criteria here
|
169
|
+
if key and (@from.nil? or @from <= date) and (@to.nil? or @to >= date) # date criteria here
|
166
170
|
@stat_hash.add(key,time)
|
167
171
|
@total_stat.add(time)
|
168
172
|
if @worst_requests.length<@worst_request_length || @worst_requests[@worst_request_length-1][0]<time
|
@@ -177,7 +181,7 @@ module RawkLog
|
|
177
181
|
title = "Log Analysis of #{@db_time ? 'DB' : @render_time ? 'render' : 'total'} request times#{@from ? %Q( from #{@from.to_s}) : ""}#{@to ? %Q( through #{@to.to_s}) : ""}"
|
178
182
|
puts title
|
179
183
|
puts "=" * title.size
|
180
|
-
puts ""
|
184
|
+
puts "(Times are in milliseconds except where indicated)\n"
|
181
185
|
label_size = @stat_hash.print()
|
182
186
|
if @stat_hash.empty?
|
183
187
|
puts @total_stat.header(label_size)
|
data/lib/rawk_log/stat.rb
CHANGED
@@ -4,8 +4,7 @@ module RawkLog
|
|
4
4
|
|
5
5
|
DEFAULT_LABEL_SIZE = 30
|
6
6
|
|
7
|
-
HEADER
|
8
|
-
HEADER_NEW_LOG_FORMAT = "Count Sum(s) Max Median Avg Min Std"
|
7
|
+
HEADER = "Count Sum(secs) Max Median Avg Min Std"
|
9
8
|
|
10
9
|
def initialize(key)
|
11
10
|
@key=key
|
@@ -31,8 +30,7 @@ module RawkLog
|
|
31
30
|
end
|
32
31
|
|
33
32
|
def header(label_size = DEFAULT_LABEL_SIZE)
|
34
|
-
|
35
|
-
sprintf "%*s %s" % [-label_size, "Request", header]
|
33
|
+
sprintf "%*s %s" % [-label_size, "Request", HEADER]
|
36
34
|
end
|
37
35
|
|
38
36
|
def key
|
@@ -78,7 +76,8 @@ module RawkLog
|
|
78
76
|
if @new_log_format
|
79
77
|
sprintf("%*s %6d %9.2f %7d %7d %7d %7d %7d",-label_size, key,count,(sum.to_f/1000),max,median,average,min,standard_deviation)
|
80
78
|
else
|
81
|
-
sprintf("%*s %6d %9.2f %
|
79
|
+
sprintf("%*s %6d %9.2f %7d %7d %7d %7d %7d",-label_size, key,count,sum,max*1000.0,median*1000.0,average*1000.0,min*1000.0,standard_deviation*1000.0)
|
80
|
+
#sprintf("%*s %6d %9.2f %7.2f %7.2f %7.2f %7.2f %7.2f",-label_size,key,count,sum,max,median,average,min,standard_deviation)
|
82
81
|
end
|
83
82
|
else
|
84
83
|
sprintf("%*s %6d",-label_size,key,0)
|
data/lib/rawk_log/version.rb
CHANGED
data/test/empty_test.rb
CHANGED
@@ -10,7 +10,7 @@ class EmptyTest < Test::Unit::TestCase
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_outputs_header
|
13
|
-
assert_match(/^Request +Count +Sum +Max +Median +Avg +Min +Std$/, @output)
|
13
|
+
assert_match(/^Request +Count +Sum\(secs\) +Max +Median +Avg +Min +Std$/, @output)
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_lists_zero_entries
|
data/test/examples/rails23.log
CHANGED
@@ -28,3 +28,4 @@ Completed in 5ms (View: 2, DB: 0) | 200 OK [http://0.0.0.0/items]
|
|
28
28
|
Processing DocumentController#download (for 12.13.14.15 at 2012-12-13 11:49:03) [GET]
|
29
29
|
Completed in 936ms (View: 1, DB: 31) | 200 OK [http://www.example.com/document/download/96164/Form 6 - Occupancy permit-2034-20156 - Unit 1.docx]
|
30
30
|
|
31
|
+
Completed in 0.03599 (27 reqs/sec) | Rendering: 0.02954 (82%) | DB: 0.00196 (5%) | 200 OK [http://www.exampl
|
data/test/mixed_rails40_test.rb
CHANGED
@@ -14,7 +14,7 @@ class MixedRails40Test < Test::Unit::TestCase
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_outputs_header
|
17
|
-
assert_match(/^Request +Count +Sum +Max +Median +Avg +Min +Std$/, @output)
|
17
|
+
assert_match(/^Request +Count +Sum\(secs\) +Max +Median +Avg +Min +Std$/, @output)
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_has_top_lists
|
data/test/rails23_test.rb
CHANGED
@@ -18,7 +18,7 @@ class Rails23Test < Test::Unit::TestCase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_outputs_header
|
21
|
-
assert_match(/^Request +Count +Sum\(
|
21
|
+
assert_match(/^Request +Count +Sum\(secs\) +Max +Median +Avg +Min +Std$/, @output)
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_finds_entries
|
data/test/rails40_test.rb
CHANGED
@@ -18,7 +18,7 @@ class Rails40Test < Test::Unit::TestCase
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_outputs_header
|
21
|
-
assert_match(/^Request +Count +Sum +Max +Median +Avg +Min +Std$/, @output)
|
21
|
+
assert_match(/^Request +Count +Sum\(secs\) +Max +Median +Avg +Min +Std$/, @output)
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_finds_entries
|
data/test/unknown_test.rb
CHANGED
@@ -10,7 +10,7 @@ class UnknownTest < Test::Unit::TestCase
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_outputs_header
|
13
|
-
assert_match(/^Request +Count +Sum +Max +Median +Avg +Min +Std$/, @output)
|
13
|
+
assert_match(/^Request +Count +Sum\(secs\) +Max +Median +Avg +Min +Std$/, @output)
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_no_top_lists
|