rack-simple_logger 0.0.2 → 0.0.3
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 +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
|