simple-rack-logger 0.0.1 → 0.0.2
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.
@@ -4,9 +4,10 @@ module Rack
|
|
4
4
|
class RequestLogger
|
5
5
|
attr_reader :logger
|
6
6
|
|
7
|
-
def initialize(app, logger)
|
8
|
-
@app
|
9
|
-
@logger
|
7
|
+
def initialize(app, logger, *filters)
|
8
|
+
@app = app
|
9
|
+
@logger = logger
|
10
|
+
@filters = filters
|
10
11
|
|
11
12
|
def @logger.flush
|
12
13
|
# Chamando o flush diretamente, pois está demorando para descarregar a memória
|
@@ -14,18 +15,23 @@ module Rack
|
|
14
15
|
logdev = self.instance_variable_get(:@logdev)
|
15
16
|
logdev.instance_variable_get(:@dev).flush if logdev
|
16
17
|
end
|
17
|
-
|
18
18
|
end
|
19
19
|
|
20
20
|
def call(env)
|
21
|
-
|
22
|
-
|
21
|
+
request = Rack::Request.new(env)
|
22
|
+
block = @filters.select { |filter| filter.respond_to?(:filter) && filter.send(:filter, request) }
|
23
|
+
|
24
|
+
if block.empty?
|
25
|
+
logger.info(expose(request))
|
26
|
+
logger.flush
|
27
|
+
end
|
28
|
+
|
23
29
|
@app.call(env)
|
24
30
|
end
|
25
31
|
|
26
32
|
private
|
27
33
|
def expose(request)
|
28
|
-
params = request.params.map{|key, value| "#{key}=#{value}"}
|
34
|
+
params = request.params.map { |key, value| "#{key}=#{value}" }
|
29
35
|
"#{request.request_method}: #{request.url} for #{request.ip} with #{request.user_agent} [params: #{params.join('; ')}]"
|
30
36
|
end
|
31
37
|
|
@@ -3,16 +3,12 @@ require 'spec_helper'
|
|
3
3
|
describe Rack::RequestLogger do
|
4
4
|
|
5
5
|
let(:logger) { logger = double(Logger) }
|
6
|
-
|
7
|
-
|
8
|
-
app = mock(Struct.new(:none))
|
9
|
-
app.should_receive(:call)
|
10
|
-
Rack::RequestLogger.new(app, logger)
|
6
|
+
let(:app) {
|
7
|
+
mock(Struct.new(:none))
|
11
8
|
}
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
env = {
|
10
|
+
let(:env) do
|
11
|
+
{
|
16
12
|
"GATEWAY_INTERFACE" => "CGI/1.1",
|
17
13
|
"PATH_INFO" => "/v1/crachas.xml",
|
18
14
|
"QUERY_STRING" => "",
|
@@ -37,10 +33,35 @@ describe Rack::RequestLogger do
|
|
37
33
|
"rack.run_once" => false,
|
38
34
|
"rack.url_scheme" => "http"
|
39
35
|
}
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'inicial state without filter' do
|
39
|
+
subject {
|
40
|
+
Rack::RequestLogger.new(app, logger)
|
41
|
+
}
|
42
|
+
|
43
|
+
it 'log request information from env' do
|
44
|
+
app.should_receive(:call)
|
45
|
+
logger.should_receive(:info).with('GET: http://localhost:9393/v1/crachas.xml for 127.0.0.1 with curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 [params: ]')
|
46
|
+
subject.call(env)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'inicial state with filter' do
|
51
|
+
subject {
|
52
|
+
filter = Object.new
|
53
|
+
def filter.filter(request)
|
54
|
+
request.ip =~/127.0.0.1/
|
55
|
+
end
|
56
|
+
Rack::RequestLogger.new(app, logger, filter)
|
57
|
+
}
|
40
58
|
|
41
|
-
|
59
|
+
it 'dont log request information from env' do
|
60
|
+
app.should_receive(:call)
|
61
|
+
logger.should_not_receive(:info)
|
62
|
+
subject.call(env)
|
63
|
+
end
|
42
64
|
|
43
|
-
subject.call(env)
|
44
65
|
end
|
45
66
|
|
46
67
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple-rack-logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-12 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A simple rack for log information from environment.
|
15
15
|
email:
|