rack_logger 0.0.6 → 0.1.0

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.
@@ -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: []