rack_logger 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 82bc9aedcfdac1911edf51cd28fa9ffb7db09015
4
+ data.tar.gz: ae52d0183180aa4c727147af35230d180f479f42
5
+ SHA512:
6
+ metadata.gz: 4a29a6c13c47355a9d4bca4383954c7e47c1c75c4e299ed97e95e40644762b400ade549118a7d17b85b7ccf98c42fa7ab3f392271cfed248ce84191499de6493
7
+ data.tar.gz: d05bf44522e6ddf5545f8d1578659fa9f5a6560f414f35f90269121e6b61ce55cebf212aa5410e515664750e0f3eafe21e4359c816ed09878d15cc8c77434ffc
@@ -1,5 +1,5 @@
1
1
  require "rack_logger/version"
2
-
2
+ require "uuidtools"
3
3
  require 'cgi'
4
4
  # Completed 404 Not Found in 105ms (Views: 4.6ms | ActiveRecord: 2.3ms | Sphinx: 0.0ms | Gateway: 86.3ms)
5
5
  class RackLogger
@@ -25,15 +25,18 @@ class RackLogger
25
25
  begin
26
26
  request = Rack::Request.new(env)
27
27
  time_start = Time.now
28
- logger.info "Started #{request.request_method} \"#{CGI.unescape(request.url)}\" for #{request.ip} at #{Time.now} #{request.user_agent}"
28
+ logger.info "Started #{request.request_method} \"#{request.url}\" for #{request.ip} at #{Time.now} #{request.user_agent}"
29
+ Thread.current[:request_id] ||= UUIDTools::UUID.random_create.to_s
29
30
  status, header, body = @app.call(env)
30
31
  # million seconds
31
32
  time_cost = (Time.now - time_start) * 1000
32
33
  header["x-runtime"] = "%.2fms" % time_cost
34
+ header["x-request-id"] = Thread.current[:request_id]
33
35
 
34
36
  [status, header, body]
35
37
  ensure
36
38
  benchmarks = []
39
+ payload = {}
37
40
 
38
41
  time_cost ||= (Time.now - time_start) * 1000
39
42
 
@@ -43,16 +46,30 @@ class RackLogger
43
46
 
44
47
  if t = subscriber_class.send(:runtime)
45
48
  benchmarks << "#{label}: %.2fms" % t
49
+ payload["#{label.downcase}_runtime"] = t
46
50
  subscriber_class.send(:reset_runtime)
47
51
  end
48
52
  end
49
53
 
50
- msg = "Completed #{request.request_method} \"#{CGI.unescape(request.url)}\" #{status}"
54
+ msg = "Completed #{request.request_method} #{ CGI.unescape(request.url)} #{status}"
51
55
  msg << " in %.2fms" % time_cost
52
56
  msg << " ("
53
57
  msg << benchmarks.join(' | ')
54
58
  msg << ") "
59
+
60
+ payload[:method] = request.request_method
61
+ payload[:url] = CGI.unescape(request.url)
62
+ uri = URI(request.url)
63
+ payload[:host] = uri.host
64
+ payload[:path] = uri.path
65
+ payload[:query] = uri.query
66
+
67
+ payload[:status_code] = status
68
+ payload[:duration] = time_cost
69
+ payload[:header] = header
70
+ payload[:request_id] = Thread.current[:request_id]
55
71
  if status >= 400
72
+ payload[:body] = body
56
73
  body_str = ""
57
74
  if body.respond_to? :each
58
75
  body.each do |b|
@@ -68,6 +85,9 @@ class RackLogger
68
85
  msg << "\n\n"
69
86
  logger.info msg
70
87
  end
88
+ if defined? ActiveSupport
89
+ ActiveSupport::Notifications.instrument "process.rack_logger", payload
90
+ end
71
91
  end
72
92
  end
73
93
  end
@@ -1,3 +1,3 @@
1
1
  class RackLogger
2
- VERSION = "0.0.6"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -17,6 +17,8 @@ Gem::Specification.new do |gem|
17
17
 
18
18
 
19
19
  gem.add_runtime_dependency 'rack'
20
+ gem.add_runtime_dependency 'uuidtools'
20
21
 
21
22
  gem.add_development_dependency 'rake'
23
+ gem.add_development_dependency 'activesupport'
22
24
  end
metadata CHANGED
@@ -1,46 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Allen Wei
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-04 00:00:00.000000000 Z
11
+ date: 2014-05-05 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rack
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: uuidtools
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
28
39
  - !ruby/object:Gem::Version
29
40
  version: '0'
30
41
  - !ruby/object:Gem::Dependency
31
42
  name: rake
32
43
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
44
  requirements:
35
- - - ! '>='
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
36
60
  - !ruby/object:Gem::Version
37
61
  version: '0'
38
62
  type: :development
39
63
  prerelease: false
40
64
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
65
  requirements:
43
- - - ! '>='
66
+ - - ">="
44
67
  - !ruby/object:Gem::Version
45
68
  version: '0'
46
69
  description: Rack logger support ActiveSupport LogSubscriber
@@ -50,7 +73,7 @@ executables: []
50
73
  extensions: []
51
74
  extra_rdoc_files: []
52
75
  files:
53
- - .gitignore
76
+ - ".gitignore"
54
77
  - Gemfile
55
78
  - LICENSE
56
79
  - README.md
@@ -60,32 +83,25 @@ files:
60
83
  - rack_logger.gemspec
61
84
  homepage: https://github.com/allenwei/rack-logger
62
85
  licenses: []
86
+ metadata: {}
63
87
  post_install_message:
64
88
  rdoc_options: []
65
89
  require_paths:
66
90
  - lib
67
91
  required_ruby_version: !ruby/object:Gem::Requirement
68
- none: false
69
92
  requirements:
70
- - - ! '>='
93
+ - - ">="
71
94
  - !ruby/object:Gem::Version
72
95
  version: '0'
73
- segments:
74
- - 0
75
- hash: 820870016552942524
76
96
  required_rubygems_version: !ruby/object:Gem::Requirement
77
- none: false
78
97
  requirements:
79
- - - ! '>='
98
+ - - ">="
80
99
  - !ruby/object:Gem::Version
81
100
  version: '0'
82
- segments:
83
- - 0
84
- hash: 820870016552942524
85
101
  requirements: []
86
102
  rubyforge_project:
87
- rubygems_version: 1.8.24
103
+ rubygems_version: 2.2.2
88
104
  signing_key:
89
- specification_version: 3
105
+ specification_version: 4
90
106
  summary: Rack logger support ActiveSupport LogSubscriber
91
107
  test_files: []