logworm_amqp 0.9.4 → 0.9.5
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.
- data/CHANGELOG +9 -1
- data/Rakefile +1 -1
- data/lib/base/db.rb +4 -3
- data/lib/client/rack.rb +4 -3
- data/lib/client/rails.rb +12 -10
- data/logworm_amqp.gemspec +2 -2
- metadata +4 -4
data/CHANGELOG
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
v0.9.5
|
|
2
|
+
A few changes:
|
|
3
|
+
- Add support for log_environments(arr) configuration, to specify a list of environments in which logworm should log
|
|
4
|
+
(thanks to Erik Hanson @ Top Prospect)
|
|
5
|
+
- Fixed problems with request.path and request.status on Rails 2.3.x
|
|
6
|
+
(thanks to Andrew Cove @ getaquirk.com)
|
|
7
|
+
- The db server now specifies a PREFIX for AMQP queue names, to make debugging easier (e.g., to send msgs to lw-staging)
|
|
8
|
+
|
|
9
|
+
v0.9.4
|
|
2
10
|
Minor timeout changes to production environment
|
|
3
11
|
|
|
4
12
|
v0.9.3
|
data/Rakefile
CHANGED
data/lib/base/db.rb
CHANGED
|
@@ -115,6 +115,7 @@ module Logworm
|
|
|
115
115
|
resp = db_call(:get, "#{host_with_protocol}/amqp_url")
|
|
116
116
|
@amqp_url = resp["url"]
|
|
117
117
|
@stats_freq = resp["stats_freq"]
|
|
118
|
+
@amqp_prefix = resp["prefix"] || "lw"
|
|
118
119
|
$stderr.puts "logworm server acquired: #{@amqp_url.gsub(/[^@]+@/, "amqp://")}"
|
|
119
120
|
Minion.amqp_url = @amqp_url
|
|
120
121
|
reset_stats
|
|
@@ -130,7 +131,7 @@ module Logworm
|
|
|
130
131
|
if get_amqp_url
|
|
131
132
|
content = payload.to_json
|
|
132
133
|
sig= signature(content, @token_secret )
|
|
133
|
-
Minion.enqueue(queue, {:payload => content, :consumer_key => @token, :signature => sig,
|
|
134
|
+
Minion.enqueue("#{@amqp_prefix}.#{queue}", {:payload => content, :consumer_key => @token, :signature => sig,
|
|
134
135
|
:env => ENV['RACK_ENV'] || "?"})
|
|
135
136
|
end
|
|
136
137
|
end
|
|
@@ -152,7 +153,7 @@ module Logworm
|
|
|
152
153
|
def push_stats()
|
|
153
154
|
avg = sprintf('%.6f', (@total_time / @tock)).to_f
|
|
154
155
|
len = sprintf('%.2f', (Time.now - @sampling_start)).to_f
|
|
155
|
-
to_amqp("
|
|
156
|
+
to_amqp("stats", {:avg => avg , :max => @amqp_max, :min => @amqp_min,
|
|
156
157
|
:total => @total_time, :count => @tock, :sampling_length => len})
|
|
157
158
|
$stderr.puts "logworm statistics: #{@tock} messages sent in last #{len} secs. Times: #{avg * 1000}/#{@amqp_min * 1000}/#{@amqp_max * 1000} (avg/min/max msecs)"
|
|
158
159
|
reset_stats
|
|
@@ -166,7 +167,7 @@ module Logworm
|
|
|
166
167
|
|
|
167
168
|
def batch_log(entries)
|
|
168
169
|
recording_stats do
|
|
169
|
-
to_amqp("
|
|
170
|
+
to_amqp("logging", {:entries => entries})
|
|
170
171
|
end
|
|
171
172
|
end
|
|
172
173
|
|
data/lib/client/rack.rb
CHANGED
|
@@ -8,13 +8,14 @@ module Logworm
|
|
|
8
8
|
|
|
9
9
|
@log_requests = (options[:donot_log_requests].nil? or options[:donot_log_requests] != true)
|
|
10
10
|
@log_headers = (options[:log_headers] and options[:log_headers] == true)
|
|
11
|
-
@
|
|
11
|
+
@log_envs = options[:log_environments] || ["production"]
|
|
12
|
+
@log_envs << "development" if (options[:log_in_development] and options[:log_in_development] == true) # backwards compatibility
|
|
12
13
|
Logger.use_default_db
|
|
13
14
|
@timeout = (ENV['RACK_ENV'] == 'production' ? 1 : 5)
|
|
14
15
|
end
|
|
15
16
|
|
|
16
17
|
def call(env)
|
|
17
|
-
return @app.call(env) unless (ENV['RACK_ENV']
|
|
18
|
+
return @app.call(env) unless @log_envs.include?(ENV['RACK_ENV'])
|
|
18
19
|
|
|
19
20
|
Logger.start_cycle
|
|
20
21
|
begin
|
|
@@ -30,7 +31,7 @@ module Logworm
|
|
|
30
31
|
private
|
|
31
32
|
def log_request(env, status, response_headers, appTime)
|
|
32
33
|
method = env['REQUEST_METHOD']
|
|
33
|
-
path =
|
|
34
|
+
path = env['PATH_INFO'] || env['REQUEST_PATH'] || "/"
|
|
34
35
|
ip = env['REMOTE_ADDR']
|
|
35
36
|
http_headers = env.reject {|k,v| !(k.to_s =~ /^HTTP/) }
|
|
36
37
|
queue_size = env['HTTP_X_HEROKU_QUEUE_DEPTH'].nil? ? -1 : env['HTTP_X_HEROKU_QUEUE_DEPTH'].to_i
|
data/lib/client/rails.rb
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
if defined?(ActionController) and Rails::VERSION::STRING and Rails::VERSION::STRING < "3.0.0"
|
|
8
8
|
|
|
9
9
|
require 'benchmark'
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
ActionController::Base.class_eval do
|
|
12
12
|
## Basic settings: log requests, without headers. Use default db, and timeout after 1 second
|
|
13
13
|
@@log_requests = true
|
|
14
14
|
@@log_headers = false
|
|
15
|
-
@@
|
|
16
|
-
@@timeout
|
|
15
|
+
@@log_envs = ["production"]
|
|
16
|
+
@@timeout = (RAILS_ENV == 'production' ? 1 : 5)
|
|
17
17
|
Logworm::Logger.use_default_db
|
|
18
18
|
|
|
19
19
|
###
|
|
@@ -35,8 +35,12 @@ if defined?(ActionController) and Rails::VERSION::STRING and Rails::VERSION::STR
|
|
|
35
35
|
###
|
|
36
36
|
# Turn on logging in development mode
|
|
37
37
|
###
|
|
38
|
-
def self.log_in_development
|
|
39
|
-
@@
|
|
38
|
+
def self.log_in_development # Kept for backwards compatibility
|
|
39
|
+
@@log_envs << "development"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.log_environments(*envs)
|
|
43
|
+
@@log_envs = envs
|
|
40
44
|
end
|
|
41
45
|
|
|
42
46
|
###
|
|
@@ -44,9 +48,7 @@ if defined?(ActionController) and Rails::VERSION::STRING and Rails::VERSION::STR
|
|
|
44
48
|
# Call the original method, logs the request unless disabled, and flushes the logworm list
|
|
45
49
|
###
|
|
46
50
|
def process_with_logworm_log(request, response, method = :perform_action, *arguments)
|
|
47
|
-
|
|
48
|
-
return process_without_logworm_log(request, response, method, *arguments)
|
|
49
|
-
end
|
|
51
|
+
return process_without_logworm_log(request, response, method, *arguments) unless @@log_envs.include?(RAILS_ENV)
|
|
50
52
|
|
|
51
53
|
Logworm::Logger.start_cycle
|
|
52
54
|
begin
|
|
@@ -64,10 +66,10 @@ if defined?(ActionController) and Rails::VERSION::STRING and Rails::VERSION::STR
|
|
|
64
66
|
private
|
|
65
67
|
def log_request(request, response, appTime)
|
|
66
68
|
method = request.env['REQUEST_METHOD']
|
|
67
|
-
path = request.
|
|
69
|
+
path = request.path.blank? ? "/" : request.path
|
|
68
70
|
ip = request.env['REMOTE_ADDR']
|
|
69
71
|
http_headers = request.headers.reject {|k,v| !(k.to_s =~ /^HTTP/) }
|
|
70
|
-
status = response.status[0..2]
|
|
72
|
+
status = response.status ? (response.status.is_a?(String) ? response.status[0..2].to_i : response.status.to_s.to_i) : -1
|
|
71
73
|
queue_size = request.env['HTTP_X_HEROKU_QUEUE_DEPTH'].blank? ? -1 : request.env['HTTP_X_HEROKU_QUEUE_DEPTH'].to_i
|
|
72
74
|
|
|
73
75
|
entry = { :summary => "#{method} #{path} - #{status} #{appTime}",
|
data/logworm_amqp.gemspec
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{logworm_amqp}
|
|
5
|
-
s.version = "0.9.
|
|
5
|
+
s.version = "0.9.5"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = ["Pomelo, LLC"]
|
|
9
|
-
s.date = %q{2010-08-
|
|
9
|
+
s.date = %q{2010-08-19}
|
|
10
10
|
s.description = %q{logworm - logging service}
|
|
11
11
|
s.email = %q{schapira@pomelollc.com}
|
|
12
12
|
s.executables = ["lw-compute", "lw-tail"]
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: logworm_amqp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 49
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 9
|
|
9
|
-
-
|
|
10
|
-
version: 0.9.
|
|
9
|
+
- 5
|
|
10
|
+
version: 0.9.5
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Pomelo, LLC
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2010-08-
|
|
18
|
+
date: 2010-08-19 00:00:00 -04:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|