apache_log-parser 3.0.0 → 3.1.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.
- checksums.yaml +4 -4
- data/lib/apache_log/parser.rb +3 -3
- data/lib/apache_log/parser/version.rb +1 -1
- data/spec/apache_log/parser_spec.rb +46 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2679264013d2c6cf84bb77978e6380edd1c4ab67
|
4
|
+
data.tar.gz: 71b9d2114b248aaae424daadcfdd5e86e1cc9528
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3281247ab7a73b393dea4364c6595ee9adaa3803767555e3b95ccb575d6159ed5a0b0589e8f5ac6f1b98718ed666ab66be53a67718cf75799bf28f856aa25a06
|
7
|
+
data.tar.gz: e50f2cf1469c4a665581e4d2fbcba1490800033bb65f9e250b705a8dba821708dba266392177b776b738664571f36a2bb719b88213d42cffb75afbd002523b9d
|
data/lib/apache_log/parser.rb
CHANGED
@@ -7,7 +7,7 @@ module ApacheLog
|
|
7
7
|
common_fields = %w(remote_host identity_check user datetime request status size)
|
8
8
|
combined_fields = common_fields + %w(referer user_agent)
|
9
9
|
|
10
|
-
common_pattern = '(\
|
10
|
+
common_pattern = '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+(\S+)\s+(\S+)\s+\[(\d{2}\/.*\d{4}:\d{2}:\d{2}:\d{2}\s.*)\]\s+"(\S+\s\S+\s\S+)"\s+(\S+)\s+(\S+)'
|
11
11
|
combined_pattern = common_pattern + '\s+"([^"]*)"\s+"([^"]*)"'
|
12
12
|
additional_pattern = ''
|
13
13
|
|
@@ -18,10 +18,10 @@ module ApacheLog
|
|
18
18
|
case format
|
19
19
|
when 'common'
|
20
20
|
@fields = common_fields + additional_fields
|
21
|
-
@pattern =
|
21
|
+
@pattern = /#{common_pattern}#{additional_pattern}/
|
22
22
|
when 'combined'
|
23
23
|
@fields = combined_fields + additional_fields
|
24
|
-
@pattern =
|
24
|
+
@pattern = /#{combined_pattern}#{additional_pattern}/
|
25
25
|
else
|
26
26
|
raise "format error\n no such format: <#{format}> \n"
|
27
27
|
end
|
@@ -26,10 +26,10 @@ describe ApacheLog::Parser do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'can parse combined format log' do
|
29
|
-
line = '
|
29
|
+
line = '192.168.0.1 - - [07/Jun/2014:14:58:55 +0900] "GET /category/electronics HTTP/1.1" 200 128 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0.1) Gecko/20100101 Firefox/9.0.1"'
|
30
30
|
parser = ApacheLog::Parser.new('combined')
|
31
31
|
entity = parser.parse(line.chomp)
|
32
|
-
expect = {remote_host: '
|
32
|
+
expect = {remote_host: '192.168.0.1', identity_check: '-', user: '-', datetime: DateTime.new(2014, 6, 7, 14, 58, 55, 0.375),
|
33
33
|
request: {method: 'GET', path: '/category/electronics', protocol: 'HTTP/1.1'}, status: '200', size: '128', referer: '-',
|
34
34
|
user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0.1) Gecko/20100101 Firefox/9.0.1'}
|
35
35
|
expect(entity).to eq(expect)
|
@@ -46,20 +46,20 @@ describe ApacheLog::Parser do
|
|
46
46
|
end
|
47
47
|
|
48
48
|
it 'can parse tab separated combined format log' do
|
49
|
-
line = "
|
49
|
+
line = "192.168.0.1\t-\t-\t[07/Feb/2011:10:59:59 +0900]\t\"GET /x/i.cgi/movie/0001/-0002 HTTP/1.1\"\t200\t14462\t\"-\"\t\"DoCoMo/2.0 F08A3(c500;TB;W30H20)\"";
|
50
50
|
parser = ApacheLog::Parser.new('combined')
|
51
51
|
entity = parser.parse(line.chomp)
|
52
|
-
expect = {remote_host: '
|
52
|
+
expect = {remote_host: '192.168.0.1', identity_check: '-', user:'-', datetime: DateTime.new(2011, 2, 7, 10, 59, 59, 0.375),
|
53
53
|
request: {method: 'GET', path: '/x/i.cgi/movie/0001/-0002', protocol: 'HTTP/1.1'}, status: '200', size: '14462', referer: '-',
|
54
54
|
user_agent: 'DoCoMo/2.0 F08A3(c500;TB;W30H20)'}
|
55
55
|
expect(entity).to eq(expect)
|
56
56
|
end
|
57
57
|
|
58
58
|
it 'can parse custom format log based on combined format' do
|
59
|
-
line = '
|
59
|
+
line = '192.168.0.1 - - [07/Jun/2014:14:58:55 +0900] "GET /category/electronics HTTP/1.1" 200 128 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0.1) Gecko/20100101 Firefox/9.0.1" "example.com" "192.168.0.1201102091208001" "901"'
|
60
60
|
parser = ApacheLog::Parser.new('combined', %w(vhost usertrack request_duration))
|
61
61
|
entity = parser.parse(line.chomp)
|
62
|
-
expect = {remote_host: '
|
62
|
+
expect = {remote_host: '192.168.0.1', identity_check: '-', user: '-', datetime: DateTime.new(2014, 6, 7, 14, 58, 55, 0.375),
|
63
63
|
request: {method: 'GET', path: '/category/electronics', protocol: 'HTTP/1.1'}, status: '200', size: '128', referer: '-',
|
64
64
|
user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0.1) Gecko/20100101 Firefox/9.0.1', vhost: 'example.com',
|
65
65
|
usertrack: '192.168.0.1201102091208001', request_duration: '901'}
|
@@ -78,13 +78,51 @@ describe ApacheLog::Parser do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'can parse tab separated custom format log based on combined format' do
|
81
|
-
line = "
|
81
|
+
line = "192.168.0.1\t-\t-\t[07/Feb/2011:10:59:59 +0900]\t\"GET /x/i.cgi/movie/0001/-0002 HTTP/1.1\"\t200\t14462\t\"http://headlines.yahoo.co.jp/hl\"\t\"DoCoMo/2.0 F08A3(c500;TB;W30H20)\"\t\"virtualhost.example.jp\"\t\"192.0.2.16794832933550\"\t\"09011112222333_xx.ezweb.ne.jp\"\t533593";
|
82
82
|
parser = ApacheLog::Parser.new('combined', %w(vhost usertrack mobileid request_duration))
|
83
83
|
entity = parser.parse(line.chomp)
|
84
|
-
expect = {remote_host: '
|
84
|
+
expect = {remote_host: '192.168.0.1', identity_check: '-', user: '-', datetime: DateTime.new(2011, 2, 7, 10, 59, 59, 0.375),
|
85
85
|
request: {method: 'GET', path: '/x/i.cgi/movie/0001/-0002', protocol: 'HTTP/1.1'}, status: '200', size: '14462', referer: 'http://headlines.yahoo.co.jp/hl',
|
86
86
|
user_agent: 'DoCoMo/2.0 F08A3(c500;TB;W30H20)', vhost: 'virtualhost.example.jp',
|
87
87
|
usertrack: '192.0.2.16794832933550', mobileid: '09011112222333_xx.ezweb.ne.jp', request_duration: '533593'}
|
88
88
|
expect(entity).to eq(expect)
|
89
89
|
end
|
90
|
+
|
91
|
+
it 'can parse even if there are any columns at the beginning of line' do
|
92
|
+
line = 'foo 127.0.0.1 - - [20/May/2014:20:04:04 +0900] "GET /test/indx.html HTTP/1.1" 200 4576'
|
93
|
+
parser = ApacheLog::Parser.new('common')
|
94
|
+
entity = parser.parse(line.chomp)
|
95
|
+
expect = {remote_host: '127.0.0.1', identity_check: '-', user: '-', datetime: DateTime.new(2014, 5, 20, 20, 04, 04, 0.375),
|
96
|
+
request: {method: 'GET', path: '/test/indx.html', protocol: 'HTTP/1.1'}, status: '200', size: '4576'}
|
97
|
+
expect(entity).to eq(expect)
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'can parse even if there are any columns at the beginning of line' do
|
101
|
+
line = '200 127.0.0.1 - - [20/May/2014:20:04:04 +0900] "GET /test/indx.html HTTP/1.1" 200 4576'
|
102
|
+
parser = ApacheLog::Parser.new('common')
|
103
|
+
entity = parser.parse(line.chomp)
|
104
|
+
expect = {remote_host: '127.0.0.1', identity_check: '-', user: '-', datetime: DateTime.new(2014, 5, 20, 20, 04, 04, 0.375),
|
105
|
+
request: {method: 'GET', path: '/test/indx.html', protocol: 'HTTP/1.1'}, status: '200', size: '4576'}
|
106
|
+
expect(entity).to eq(expect)
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'can parse even if there are any columns at the beginning of line' do
|
110
|
+
line = '200 foo 192.168.0.1 - - [07/Jun/2014:14:58:55 +0900] "GET /category/electronics HTTP/1.1" 200 128 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0.1) Gecko/20100101 Firefox/9.0.1"'
|
111
|
+
parser = ApacheLog::Parser.new('combined')
|
112
|
+
entity = parser.parse(line.chomp)
|
113
|
+
expect = {remote_host: '192.168.0.1', identity_check: '-', user: '-', datetime: DateTime.new(2014, 6, 7, 14, 58, 55, 0.375),
|
114
|
+
request: {method: 'GET', path: '/category/electronics', protocol: 'HTTP/1.1'}, status: '200', size: '128', referer: '-',
|
115
|
+
user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0.1) Gecko/20100101 Firefox/9.0.1'}
|
116
|
+
expect(entity).to eq(expect)
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'can parse even if there are any columns at the end of line' do
|
120
|
+
line = '192.168.0.1 - - [07/Jun/2014:14:58:55 +0900] "GET /category/electronics HTTP/1.1" 200 128 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0.1) Gecko/20100101 Firefox/9.0.1"'
|
121
|
+
parser = ApacheLog::Parser.new('combined')
|
122
|
+
entity = parser.parse(line.chomp)
|
123
|
+
expect = {remote_host: '192.168.0.1', identity_check: '-', user: '-', datetime: DateTime.new(2014, 6, 7, 14, 58, 55, 0.375),
|
124
|
+
request: {method: 'GET', path: '/category/electronics', protocol: 'HTTP/1.1'}, status: '200', size: '128', referer: '-',
|
125
|
+
user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0.1) Gecko/20100101 Firefox/9.0.1'}
|
126
|
+
expect(entity).to eq(expect)
|
127
|
+
end
|
90
128
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apache_log-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuichi Takada
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|