logworm_amqp 0.9.6 → 0.9.7
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 +8 -0
- data/Rakefile +1 -1
- data/lib/base/db.rb +4 -2
- data/lib/client/logger.rb +14 -2
- data/lib/client/rack.rb +4 -2
- data/lib/client/rails.rb +12 -1
- data/lib/cmd/compute.rb +2 -2
- data/lib/logworm_amqp.rb +2 -2
- data/logworm_amqp.gemspec +2 -2
- metadata +4 -4
data/CHANGELOG
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
v0.9.7
|
2
|
+
- lw_query now accepts a TTL parameter -- 300 seconds by default, can be lowered up to 20 seconds min
|
3
|
+
- lw-compute now has a standard TTL of 60 seconds
|
4
|
+
- no longer preserves entries from one request to the other --made more sense when there were timeouts, but with AMQP we don't
|
5
|
+
expect to see so many of them. Fixes bugs with log_with_request calls as well.
|
6
|
+
- Adds a new optional field in the web_log table, :apache_log, a string with information about the HTTP request in
|
7
|
+
the regular Apache Log format (requested by Dave Brwon @ Top Prospect)
|
8
|
+
|
1
9
|
v0.9.6
|
2
10
|
- Preserves the order of desired fields in a query.
|
3
11
|
- Handled an exception which was being thrown when the connection to the server could not be established.
|
data/Rakefile
CHANGED
data/lib/base/db.rb
CHANGED
@@ -87,8 +87,10 @@ module Logworm
|
|
87
87
|
db_call(:get, "#{host_with_protocol}/") || []
|
88
88
|
end
|
89
89
|
|
90
|
-
def query(table, cond)
|
91
|
-
|
90
|
+
def query(table, cond, ttl = nil)
|
91
|
+
ttl = nil if ttl and !ttl.is_a? Fixnum
|
92
|
+
ttl = 20 if ttl and ttl.to_i > 0 and ttl.to_i < 20
|
93
|
+
db_call(:post, "#{host_with_protocol}/queries", {:table => table, :query => cond, :ttl => ttl})
|
92
94
|
end
|
93
95
|
|
94
96
|
|
data/lib/client/logger.rb
CHANGED
@@ -34,6 +34,8 @@ module Logworm
|
|
34
34
|
###
|
35
35
|
def self.start_cycle
|
36
36
|
$request_id = "#{Thread.current.object_id}-#{(Time.now.utc.to_f * 1000).to_i}"
|
37
|
+
$lr_queue = []
|
38
|
+
$attaches = {}
|
37
39
|
end
|
38
40
|
|
39
41
|
###
|
@@ -87,7 +89,6 @@ module Logworm
|
|
87
89
|
# Return if no server
|
88
90
|
unless $lw_server
|
89
91
|
$stderr.puts "\t logworm not configured. #{to_send} entries dropped."
|
90
|
-
$lr_queue = []
|
91
92
|
return [0,0]
|
92
93
|
end
|
93
94
|
|
@@ -99,12 +100,23 @@ module Logworm
|
|
99
100
|
|
100
101
|
startTime = Time.now
|
101
102
|
$lw_server.batch_log($lr_queue.to_json)
|
102
|
-
$lr_queue = []
|
103
103
|
endTime = Time.now
|
104
104
|
|
105
105
|
[to_send, (endTime - startTime)]
|
106
106
|
end
|
107
107
|
|
108
|
+
###
|
109
|
+
# Utility function
|
110
|
+
###
|
111
|
+
def self.apache_log(ip, method, path, env, status, response_headers)
|
112
|
+
if response_headers['Content-Length']
|
113
|
+
response_length = response_headers['Content-Length'].to_s == '0' ? '-' : response_headers['Content-Length']
|
114
|
+
else
|
115
|
+
response_length = "-"
|
116
|
+
end
|
117
|
+
"#{ip} - #{env["REMOTE_USER"] || "-"} [#{Time.now.strftime("%d/%b/%Y:%H:%M:%S %z")}] \"#{method} #{path} #{env['HTTP_VERSION']}\" #{status} #{response_length} \"#{env['HTTP_REFERER']}\" \"#{env['HTTP_USER_AGENT']}\""
|
118
|
+
end
|
119
|
+
|
108
120
|
private
|
109
121
|
# Turn keys into symbols, delete empty ones, rename conflicting ones
|
110
122
|
def self.cleanup(values)
|
data/lib/client/rack.rb
CHANGED
@@ -8,6 +8,7 @@ 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
|
+
@log_apache = (options[:log_apache] and options[:log_apache] == true)
|
11
12
|
@log_envs = options[:log_environments] || ["production"]
|
12
13
|
@log_envs << "development" if (options[:log_in_development] and options[:log_in_development] == true) # backwards compatibility
|
13
14
|
Logger.use_default_db
|
@@ -44,8 +45,9 @@ module Logworm
|
|
44
45
|
:response_status => status,
|
45
46
|
:profiling => appTime,
|
46
47
|
:queue_size => queue_size}
|
47
|
-
entry[:request_headers]
|
48
|
+
entry[:request_headers] = http_headers if @log_headers
|
48
49
|
entry[:response_headers] = response_headers if @log_headers
|
50
|
+
entry[:apache_log] = Logger.apache_log(ip, method, path, env, status, response_headers) if @log_apache
|
49
51
|
Logger.log(:web_log, entry) if @log_requests
|
50
52
|
|
51
53
|
begin
|
@@ -54,7 +56,7 @@ module Logworm
|
|
54
56
|
}
|
55
57
|
rescue Exception => e
|
56
58
|
# Ignore --nothing we can do. The list of logs may (and most likely will) be preserved for the next request
|
57
|
-
|
59
|
+
$stderr.puts("logworm call failed: #{e}")
|
58
60
|
end
|
59
61
|
end
|
60
62
|
|
data/lib/client/rails.rb
CHANGED
@@ -12,6 +12,7 @@ if defined?(ActionController) and Rails::VERSION::STRING and Rails::VERSION::STR
|
|
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
|
+
@@log_apache = false
|
15
16
|
@@log_envs = ["production"]
|
16
17
|
@@timeout = (RAILS_ENV == 'production' ? 1 : 5)
|
17
18
|
Logworm::Logger.use_default_db
|
@@ -39,6 +40,15 @@ if defined?(ActionController) and Rails::VERSION::STRING and Rails::VERSION::STR
|
|
39
40
|
@@log_envs << "development"
|
40
41
|
end
|
41
42
|
|
43
|
+
###
|
44
|
+
# Log a field with Apache common log
|
45
|
+
# Use from ApplicationController
|
46
|
+
###
|
47
|
+
def self.log_apache
|
48
|
+
@@log_apache = true
|
49
|
+
end
|
50
|
+
|
51
|
+
|
42
52
|
def self.log_environments(*envs)
|
43
53
|
@@log_envs = envs
|
44
54
|
end
|
@@ -80,8 +90,9 @@ if defined?(ActionController) and Rails::VERSION::STRING and Rails::VERSION::STR
|
|
80
90
|
:response_status => status,
|
81
91
|
:profiling => appTime,
|
82
92
|
:queue_size => queue_size}
|
83
|
-
entry[:request_headers]
|
93
|
+
entry[:request_headers] = http_headers if @@log_headers
|
84
94
|
entry[:response_headers] = response.headers if @@log_headers
|
95
|
+
entry[:apache_log] = Logworm::Logger.apache_log(ip, method, path, request.env, status, response.headers) if @@log_apache
|
85
96
|
Logworm::Logger.log(:web_log, entry) if @@log_requests
|
86
97
|
|
87
98
|
begin
|
data/lib/cmd/compute.rb
CHANGED
@@ -21,9 +21,9 @@ class LogwormCompute
|
|
21
21
|
def run
|
22
22
|
# Create a resource for the query
|
23
23
|
begin
|
24
|
-
query_data = @db.query(@table, @query.to_json)
|
24
|
+
query_data = @db.query(@table, @query.to_json, 60) # 60 second ttl by default
|
25
25
|
url = query_data["results_uri"]
|
26
|
-
rows = @db.results(url
|
26
|
+
rows = @db.results(url)["results"]
|
27
27
|
rescue Logworm::DatabaseException, Logworm::ForbiddenAccessException => e
|
28
28
|
$stderr.puts "Error: #{e}"
|
29
29
|
exit(-1)
|
data/lib/logworm_amqp.rb
CHANGED
@@ -46,10 +46,10 @@ alias :log_with_request :lw_with_log
|
|
46
46
|
# raises Logworm::DatabaseException, Logworm::ForbiddenAccessException, Logworm::InvalidQueryException
|
47
47
|
# or just a regular Exception if it cannot find the URL to the logging database
|
48
48
|
###
|
49
|
-
def lw_query(logname, query = {})
|
49
|
+
def lw_query(logname, query = {}, ttl = nil)
|
50
50
|
db = Logworm::DB.from_config_or_die # Establish connection to DB
|
51
51
|
query = Logworm::QueryBuilder.new(query).to_json if query.is_a? Hash # Turn query into proper JSON string
|
52
|
-
query_data = db.query(logname, query)
|
52
|
+
query_data = db.query(logname, query, ttl) # POST to create query
|
53
53
|
db.results(query_data["results_uri"]) # GET from query's results uri
|
54
54
|
end
|
55
55
|
|
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.7"
|
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-
|
9
|
+
s.date = %q{2010-09-03}
|
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: 53
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 7
|
10
|
+
version: 0.9.7
|
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-
|
18
|
+
date: 2010-09-03 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|