rack-simple_logger 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/lib/rack/simple_logger.rb +5 -14
- data/lib/rack/simple_logger/log_filter.rb +20 -0
- data/lib/rack/simple_logger/version.rb +1 -1
- data/spec/rack/simple_logger/log_filter_spec.rb +33 -0
- data/spec/rack/simple_logger_spec.rb +15 -1
- metadata +16 -13
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MTgxYTcyZjEyZGVmOTRiZjZmNDQ5MGU3Nzg3ZWI3OTQ3NmNkZmRjYzU1YzU1
|
10
|
-
NWJkOWU0M2U0MDJiOTBmODIwYjU2YjcxZTI2YmUwMDE4NDM4ZWMzOGYyYjMw
|
11
|
-
MWUxNjBlZmFlMjE5OGY1YTI0NjMxNTg0N2I3NjA0Y2Y2Njg0NGY=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NzEyZTI2OTk2Yjk0NDE3MzFlNzFjNDA0YWVhYjEyYmQxNTI3NDNlMTE0ZTU3
|
14
|
-
ZTk3ZWM0NTkyMjY5ZDkyYjA5N2Y5ZGZjYmQ5ZWI1NTEyYTgzOWM2NmY4Mzdj
|
15
|
-
MmUxODI1YjNkMzZjYTk2ZTIzZGE5N2Y0ODMwNGEzMDBmZGU2MjA=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7dd4ec3cff4d4004ac1bdf0a55996a93de4e63cb
|
4
|
+
data.tar.gz: 36e11ad74ff7ef2239eff7eec58db1246338cbbe
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d252d442925f6f794fb6d2d7f61cb93e1761090267b4b4275a551423eeecb2fdb52ab926deb14bdd45f1f6dd342445973a24c1e8f2925a16858078f169dde30c
|
7
|
+
data.tar.gz: 4efbd7eea252240238174866f0d56c8353b70ec2e73a84cf14801e42ac454107838873f7f03faadb89203edcb6988bdb841f0a672c257093c37af538d34f76a4
|
data/lib/rack/simple_logger.rb
CHANGED
@@ -4,36 +4,27 @@ require "logger"
|
|
4
4
|
|
5
5
|
require "rack/simple_logger/version"
|
6
6
|
require "rack/simple_logger/log_proxy"
|
7
|
+
require "rack/simple_logger/log_filter"
|
7
8
|
|
8
9
|
module Rack
|
9
10
|
class SimpleLogger
|
10
11
|
def initialize(app, options={})
|
11
12
|
options[:log] ||= STDOUT
|
12
13
|
@logger = LogProxy.new(options[:log])
|
14
|
+
@filter = options[:filter] || LogFilter.new
|
13
15
|
@app = app
|
14
16
|
end
|
15
17
|
|
16
18
|
def call(env)
|
17
19
|
began_at = Time.now
|
18
20
|
status, header, body = @app.call(env)
|
19
|
-
log(env, status, header, began_at)
|
21
|
+
log(@filter.pass(env, status, header, began_at))
|
20
22
|
[status, header, body]
|
21
23
|
end
|
22
24
|
|
23
25
|
private
|
24
|
-
def log(
|
25
|
-
@logger.write(
|
26
|
-
xff: env["HTTP_X_FORWARDED_FOR"] || "-",
|
27
|
-
host: env["REMOTE_ADDR"],
|
28
|
-
time: began_at.strftime("%Y-%m-%d %H:%M:%S"),
|
29
|
-
method: env["REQUEST_METHOD"],
|
30
|
-
path: env["PATH_INFO"],
|
31
|
-
query_strings: env["QUERY_STRING"] || "-",
|
32
|
-
status: status,
|
33
|
-
ua: env["HTTP_USER_AGENT"],
|
34
|
-
res_size: header["Content-Length"],
|
35
|
-
app_time: Time.now - began_at
|
36
|
-
)
|
26
|
+
def log(log_hash)
|
27
|
+
@logger.write(log_hash)
|
37
28
|
end
|
38
29
|
end
|
39
30
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Rack
|
4
|
+
class LogFilter
|
5
|
+
def pass(env, status, header, began_at)
|
6
|
+
{
|
7
|
+
xff: env["HTTP_X_FORWARDED_FOR"] || "-",
|
8
|
+
host: env["REMOTE_ADDR"],
|
9
|
+
time: began_at.strftime("%Y-%m-%d %H:%M:%S"),
|
10
|
+
method: env["REQUEST_METHOD"],
|
11
|
+
path: env["PATH_INFO"],
|
12
|
+
query_strings: env["QUERY_STRING"] || "-",
|
13
|
+
status: status,
|
14
|
+
ua: env["HTTP_USER_AGENT"],
|
15
|
+
res_size: header["Content-Length"],
|
16
|
+
app_time: Time.now - began_at
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Rack::LogFilter do
|
6
|
+
let(:filter) {Rack::LogFilter.new}
|
7
|
+
let(:status) {200}
|
8
|
+
let(:began_at) {Time.now}
|
9
|
+
|
10
|
+
let(:env) do
|
11
|
+
{
|
12
|
+
"REMOTE_ADDR"=>"127.0.0.1",
|
13
|
+
"REQUEST_METHOD"=>"GET",
|
14
|
+
"PATH_INFO"=>"/login",
|
15
|
+
"QUERY_STRING"=>"",
|
16
|
+
"HTTP_USER_AGENT"=>"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
let(:header) do
|
21
|
+
{"Content-Length" => 256}
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#pass" do
|
25
|
+
it "should return Hash object" do
|
26
|
+
expect(filter.pass(env, status, header, began_at).is_a? Hash).to be_true
|
27
|
+
end
|
28
|
+
|
29
|
+
it "size should be 10 items" do
|
30
|
+
expect(filter.pass(env, status, header, began_at).size).to eq(10)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -4,6 +4,7 @@ require "spec_helper"
|
|
4
4
|
|
5
5
|
describe Rack::SimpleLogger do
|
6
6
|
let(:logger) {double("logger mock", class: "Logger").as_null_object}
|
7
|
+
let(:filter) {double("filter mock")}
|
7
8
|
let(:app) {Rack::SimpleLogger.new(TestApp.new, log: logger)}
|
8
9
|
|
9
10
|
describe "#initialize" do
|
@@ -15,10 +16,19 @@ describe Rack::SimpleLogger do
|
|
15
16
|
expect(app.instance_eval{@logger}.is_a? Rack::LogProxy).to be_true
|
16
17
|
end
|
17
18
|
|
18
|
-
it "@logger
|
19
|
+
it "@logger should be a STDOUT if not specified" do
|
19
20
|
Rack::LogProxy.should_receive(:new).with(STDOUT)
|
20
21
|
Rack::SimpleLogger.new(TestApp.new)
|
21
22
|
end
|
23
|
+
|
24
|
+
it "@filter should be a LogFilter object" do
|
25
|
+
expect(app.instance_eval{@filter}.is_a? Rack::LogFilter).to be_true
|
26
|
+
end
|
27
|
+
|
28
|
+
it "@filter should be a specified filter" do
|
29
|
+
app = Rack::SimpleLogger.new(TestApp.new, log: logger, filter: filter)
|
30
|
+
expect(app.instance_eval{@filter}).to eq(filter)
|
31
|
+
end
|
22
32
|
end
|
23
33
|
|
24
34
|
describe "#call" do
|
@@ -31,6 +41,10 @@ describe Rack::SimpleLogger do
|
|
31
41
|
describe "#log" do
|
32
42
|
after {get "/"}
|
33
43
|
|
44
|
+
it "should call LogFilter#pass" do
|
45
|
+
Rack::LogFilter.any_instance.should_receive(:pass).and_return({a: 1})
|
46
|
+
end
|
47
|
+
|
34
48
|
it "should call LogProxy#write" do
|
35
49
|
Rack::LogProxy.any_instance.should_receive(:write)
|
36
50
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-simple_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- i2bskn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,56 +28,56 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rack
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rack-test
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
description: Simple logger for rack
|
@@ -95,9 +95,11 @@ files:
|
|
95
95
|
- README.md
|
96
96
|
- Rakefile
|
97
97
|
- lib/rack/simple_logger.rb
|
98
|
+
- lib/rack/simple_logger/log_filter.rb
|
98
99
|
- lib/rack/simple_logger/log_proxy.rb
|
99
100
|
- lib/rack/simple_logger/version.rb
|
100
101
|
- rack-simple_logger.gemspec
|
102
|
+
- spec/rack/simple_logger/log_filter_spec.rb
|
101
103
|
- spec/rack/simple_logger/log_proxy_spec.rb
|
102
104
|
- spec/rack/simple_logger_spec.rb
|
103
105
|
- spec/spec_helper.rb
|
@@ -112,21 +114,22 @@ require_paths:
|
|
112
114
|
- lib
|
113
115
|
required_ruby_version: !ruby/object:Gem::Requirement
|
114
116
|
requirements:
|
115
|
-
- -
|
117
|
+
- - '>='
|
116
118
|
- !ruby/object:Gem::Version
|
117
119
|
version: '0'
|
118
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
121
|
requirements:
|
120
|
-
- -
|
122
|
+
- - '>='
|
121
123
|
- !ruby/object:Gem::Version
|
122
124
|
version: '0'
|
123
125
|
requirements: []
|
124
126
|
rubyforge_project:
|
125
|
-
rubygems_version: 2.0.
|
127
|
+
rubygems_version: 2.0.0
|
126
128
|
signing_key:
|
127
129
|
specification_version: 4
|
128
130
|
summary: Simple logger for rack
|
129
131
|
test_files:
|
132
|
+
- spec/rack/simple_logger/log_filter_spec.rb
|
130
133
|
- spec/rack/simple_logger/log_proxy_spec.rb
|
131
134
|
- spec/rack/simple_logger_spec.rb
|
132
135
|
- spec/spec_helper.rb
|