httplog 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +8 -2
- data/lib/httplog/http_log.rb +22 -17
- data/lib/httplog/version.rb +1 -1
- metadata +11 -8
data/README.rdoc
CHANGED
@@ -5,7 +5,7 @@ Log outgoing HTTP requests made from your application.
|
|
5
5
|
== Installation
|
6
6
|
|
7
7
|
gem install httplog
|
8
|
-
|
8
|
+
|
9
9
|
== Usage
|
10
10
|
|
11
11
|
require 'httplog'
|
@@ -24,12 +24,18 @@ You can override the following default options:
|
|
24
24
|
HttpLog.options[:log_status] = true
|
25
25
|
HttpLog.options[:log_response] = true
|
26
26
|
HttpLog.options[:log_benchmark] = true
|
27
|
+
HttpLog.options[:compact_log] = false # setting this to true will make all "log_*" options redundant
|
27
28
|
|
28
29
|
So if you want to use this in a Rails app:
|
29
30
|
|
30
31
|
# file: config/initializers/httplog.rb
|
31
|
-
|
32
|
+
|
32
33
|
HttpLog.options[:logger] = Rails.logger
|
33
34
|
|
35
|
+
== Development
|
34
36
|
|
37
|
+
To run the tests, a web server must be listening on localhost port 3000. Then simply
|
38
|
+
run `bundle exec rake`. The tests will make GET and POST requests to `http://localhost:3000/foo` by
|
39
|
+
default.
|
35
40
|
|
41
|
+
TODO: Make tests self-contained.
|
data/lib/httplog/http_log.rb
CHANGED
@@ -2,7 +2,7 @@ require "net/http"
|
|
2
2
|
require "logger"
|
3
3
|
|
4
4
|
module HttpLog
|
5
|
-
|
5
|
+
|
6
6
|
def self.options
|
7
7
|
@@options ||= {
|
8
8
|
:logger => Logger.new($stdout),
|
@@ -12,14 +12,15 @@ module HttpLog
|
|
12
12
|
:log_data => true,
|
13
13
|
:log_status => true,
|
14
14
|
:log_response => true,
|
15
|
-
:log_benchmark => true
|
15
|
+
:log_benchmark => true,
|
16
|
+
:log_compact => false
|
16
17
|
}
|
17
18
|
end
|
18
|
-
|
19
|
+
|
19
20
|
def self.log(msg)
|
20
21
|
@@options[:logger].add(@@options[:severity]) { msg }
|
21
22
|
end
|
22
|
-
|
23
|
+
|
23
24
|
end
|
24
25
|
|
25
26
|
module Net
|
@@ -30,38 +31,42 @@ module Net
|
|
30
31
|
|
31
32
|
def request(req, body = nil, &block)
|
32
33
|
|
33
|
-
if started?
|
34
|
+
if started? && !HttpLog.options[:compact_log]
|
34
35
|
if HttpLog.options[:log_request]
|
35
36
|
HttpLog::log("[httplog] Sending: #{req.method} http://#{@address}:#{@port}#{req.path}")
|
36
37
|
end
|
37
|
-
|
38
|
-
if req.method == "POST" && HttpLog.options[:log_data]
|
39
|
-
# a bit convoluted becase post_form uses form_data= to assign the data, so
|
38
|
+
|
39
|
+
if req.method == "POST" && HttpLog.options[:log_data]
|
40
|
+
# a bit convoluted becase post_form uses form_data= to assign the data, so
|
40
41
|
# in that case req.body will be empty
|
41
42
|
data = req.body.nil? || req.body.size == 0 ? body : req.body
|
42
|
-
HttpLog::log("[httplog] Data: #{data}")
|
43
|
+
HttpLog::log("[httplog] Data: #{data}")
|
43
44
|
end
|
44
45
|
end
|
45
|
-
|
46
|
+
|
46
47
|
r0 = Time.now
|
47
48
|
response = orig_request(req, body, &block)
|
48
|
-
|
49
|
+
|
49
50
|
benchmark = Time.now - r0
|
50
51
|
if started?
|
51
|
-
|
52
|
-
|
53
|
-
|
52
|
+
if HttpLog.options[:compact_log]
|
53
|
+
HttpLog::log("[httplog] #{req.method} http://#{@address}:#{@port}#{req.path} completed with status code #{response.code} in #{benchmark}")
|
54
|
+
else
|
55
|
+
HttpLog::log("[httplog] Benchmark: #{benchmark}") if HttpLog.options[:log_benchmark]
|
56
|
+
HttpLog::log("[httplog] Status: #{response.code}") if HttpLog.options[:log_status]
|
57
|
+
HttpLog::log("[httplog] Response: #{response.body}") if HttpLog.options[:log_response]
|
58
|
+
end
|
54
59
|
end
|
55
|
-
|
60
|
+
|
56
61
|
response
|
57
62
|
end
|
58
63
|
|
59
64
|
def connect
|
60
|
-
unless started?
|
65
|
+
unless started? || HttpLog.options[:compact_log]
|
61
66
|
HttpLog::log("[httplog] Connecting: #{@address}") if HttpLog.options[:log_connect]
|
62
67
|
end
|
63
68
|
orig_connect
|
64
69
|
end
|
65
70
|
end
|
66
71
|
|
67
|
-
end
|
72
|
+
end
|
data/lib/httplog/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: httplog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01
|
12
|
+
date: 2012-10-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,12 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
description: ! "Log outgoing HTTP requests made from your application. Helpful for
|
26
31
|
tracking API calls\n of third party gems that don't provide
|
27
32
|
their own log output."
|
@@ -49,9 +54,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
49
54
|
- - ! '>='
|
50
55
|
- !ruby/object:Gem::Version
|
51
56
|
version: '0'
|
52
|
-
segments:
|
53
|
-
- 0
|
54
|
-
hash: 3192399211165179512
|
55
57
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
58
|
none: false
|
57
59
|
requirements:
|
@@ -60,8 +62,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
60
62
|
version: '0'
|
61
63
|
requirements: []
|
62
64
|
rubyforge_project:
|
63
|
-
rubygems_version: 1.8.
|
65
|
+
rubygems_version: 1.8.24
|
64
66
|
signing_key:
|
65
67
|
specification_version: 3
|
66
68
|
summary: Logs outgoing Net::HTTP requests.
|
67
69
|
test_files: []
|
70
|
+
has_rdoc:
|