logworm_client 0.3.2 → 0.4.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.
- data/CHANGELOG +6 -1
- data/Manifest +1 -0
- data/Rakefile +1 -1
- data/bin/lw-tail +8 -2
- data/lib/logworm_client.rb +1 -0
- data/lib/logworm_client/rails.rb +70 -0
- data/lib/logworm_utils/tail.rb +24 -2
- data/logworm_client.gemspec +4 -4
- metadata +6 -4
data/CHANGELOG
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
v0.
|
1
|
+
v0.4.0 Added support for running on Rails!
|
2
|
+
To use, add config.gem ‘logworm_client’ to environment.rb
|
3
|
+
Then you can configure in ApplicationController, via logs_requests [:short | :long]+
|
4
|
+
Works from views, models, or controllers.
|
5
|
+
|
6
|
+
v0.3.2 added lw_log method --fixed small issue
|
2
7
|
|
3
8
|
v0.3.1 added lw_log method
|
4
9
|
|
data/Manifest
CHANGED
data/Rakefile
CHANGED
data/bin/lw-tail
CHANGED
@@ -4,6 +4,12 @@ require 'rubygems'
|
|
4
4
|
require 'logworm_utils'
|
5
5
|
require 'optparse'
|
6
6
|
|
7
|
+
def help(option_parser)
|
8
|
+
puts option_parser.help
|
9
|
+
puts
|
10
|
+
LogwormTail.list
|
11
|
+
end
|
12
|
+
|
7
13
|
options = {
|
8
14
|
:limit => 200,
|
9
15
|
:loop => false,
|
@@ -54,7 +60,7 @@ option_parser = OptionParser.new do |opts|
|
|
54
60
|
end
|
55
61
|
|
56
62
|
opts.on( '-h', '--help', 'Display this screen' ) do
|
57
|
-
|
63
|
+
help option_parser
|
58
64
|
exit(1)
|
59
65
|
end
|
60
66
|
|
@@ -64,7 +70,7 @@ end
|
|
64
70
|
option_parser.parse!
|
65
71
|
table = ARGV.pop
|
66
72
|
if !table
|
67
|
-
|
73
|
+
help option_parser
|
68
74
|
exit(1)
|
69
75
|
end
|
70
76
|
table.strip!
|
data/lib/logworm_client.rb
CHANGED
@@ -0,0 +1,70 @@
|
|
1
|
+
###
|
2
|
+
# Extemds ActionController::Base and aliases the process method, to wrap it with the standard logworm request cycle
|
3
|
+
#
|
4
|
+
# By default it will automatically log web requests (in a short format) into web_log
|
5
|
+
# Can also log in long format if specified.
|
6
|
+
#
|
7
|
+
# Configuration
|
8
|
+
# In ApplicationController, add
|
9
|
+
# logs_requests :short, :long
|
10
|
+
# logs_requests :long
|
11
|
+
# logs_requests :short, :long
|
12
|
+
###
|
13
|
+
if defined?(ActionController)
|
14
|
+
|
15
|
+
ActionController::Base.class_eval do
|
16
|
+
@@log_requests_short = true
|
17
|
+
@@log_requests_long = false
|
18
|
+
|
19
|
+
def self.logs_requests(*options)
|
20
|
+
@@log_requests_short = (options.include?(:short) or options.include?("short"))
|
21
|
+
@@log_requests_long = (options.include?(:long) or options.include?("long"))
|
22
|
+
end
|
23
|
+
|
24
|
+
def process_with_logworm_log(request, response, method = :perform_action, *arguments)
|
25
|
+
startTime = Time.now
|
26
|
+
Logworm::Logger.start_cycle
|
27
|
+
begin
|
28
|
+
response = process_without_logworm_log(request, response, method, *arguments)
|
29
|
+
appTime = (Time.now - startTime)
|
30
|
+
ensure
|
31
|
+
env = request.env
|
32
|
+
status = response.status[0..2]
|
33
|
+
|
34
|
+
Logworm::Logger.log(:web_log_long,
|
35
|
+
{:summary => "#{env['REQUEST_METHOD']} #{env['REQUEST_URI']} - #{status} #{appTime}",
|
36
|
+
:request => env_to_log(env).merge({:input => request.request_parameters}),
|
37
|
+
:response => {:status => status, :headers => response.headers},
|
38
|
+
:profiling => appTime}) if @@log_requests_long
|
39
|
+
Logworm::Logger.log(:web_log,
|
40
|
+
{:summary => "#{env['REQUEST_METHOD']} #{env['REQUEST_URI']} - #{status} #{appTime}",
|
41
|
+
:request_path => env['REQUEST_URI'], :request_ip => env['REMOTE_ADDR'],
|
42
|
+
:request_method => env['REQUEST_METHOD'],
|
43
|
+
:input => request.request_parameters,
|
44
|
+
:response_status => status,
|
45
|
+
:profiling => appTime}) if @@log_requests_short
|
46
|
+
begin
|
47
|
+
Timeout::timeout(1) {
|
48
|
+
Logworm::Logger.flush # Flushes only if there are any entries. Times out after a second
|
49
|
+
}
|
50
|
+
rescue Exception => e
|
51
|
+
# Ignore --nothing we can do
|
52
|
+
# The list of logs may (and most likely will) be preserved for the next request
|
53
|
+
logger.error("logworm call failed: #{e}") if logger
|
54
|
+
end
|
55
|
+
return response
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def env_to_log(env)
|
60
|
+
to_log = {}
|
61
|
+
env.each do |k,v|
|
62
|
+
to_log[k.to_s.downcase.to_sym] = v unless (k.to_s =~ /rack/i or k.to_s =~ /\./i)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
alias_method_chain :process, :logworm_log
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
data/lib/logworm_utils/tail.rb
CHANGED
@@ -12,6 +12,24 @@ class LogwormTail
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
def self.list
|
16
|
+
begin
|
17
|
+
@db = Logworm::DB.new(false)
|
18
|
+
@tables = @db.tables
|
19
|
+
if @tables and @tables.size > 0
|
20
|
+
puts "The following are the tables that you've created thus far:"
|
21
|
+
@tables.sort {|x,y| x["tablename"] <=> y["tablename"]}.each do |t|
|
22
|
+
puts "\t - #{t["tablename"]}, #{t["rows"]} rows, last updated on #{date_time(t["last_write"])}"
|
23
|
+
end
|
24
|
+
else
|
25
|
+
puts "You haven't recorded any data yet."
|
26
|
+
end
|
27
|
+
rescue Exception => e
|
28
|
+
$stderr.puts "Error: #{e}"
|
29
|
+
exit(-1)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
15
33
|
def run
|
16
34
|
# Create a resource for the query
|
17
35
|
begin
|
@@ -56,6 +74,10 @@ class LogwormTail
|
|
56
74
|
|
57
75
|
private
|
58
76
|
|
77
|
+
def self.date_time(val)
|
78
|
+
val.gsub(/T/, ' @ ').gsub(/Z/, ' GMT')
|
79
|
+
end
|
80
|
+
|
59
81
|
def print_rows(rows, last)
|
60
82
|
last = "" if last.nil?
|
61
83
|
rows.reverse.each do |r|
|
@@ -64,7 +86,7 @@ class LogwormTail
|
|
64
86
|
last = r["_ts"]
|
65
87
|
r.delete("_id") unless @options[:fields].include?("_id")
|
66
88
|
r.delete("_ts") unless @options[:fields].include?("_ts")
|
67
|
-
puts "#{
|
89
|
+
puts "#{LogwormTail.date_time(last)} ==> "
|
68
90
|
print_row(r)
|
69
91
|
end
|
70
92
|
end
|
@@ -73,7 +95,7 @@ class LogwormTail
|
|
73
95
|
|
74
96
|
def print_row(r)
|
75
97
|
if @options[:flat]
|
76
|
-
r.keys.sort.map {|k| "#{k}: #{r[k].inspect}"}.join(', ')
|
98
|
+
puts "\t" + r.keys.sort.map {|k| "#{k}: #{r[k].inspect}"}.join(', ')
|
77
99
|
else
|
78
100
|
r.keys.sort.each do |k|
|
79
101
|
puts "\t#{k}: #{r[k].inspect}"
|
data/logworm_client.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{logworm_client}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.4.0"
|
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-03-
|
9
|
+
s.date = %q{2010-03-04}
|
10
10
|
s.description = %q{logworm client utilities}
|
11
11
|
s.email = %q{schapira@pomelollc.com}
|
12
12
|
s.executables = ["lw-compute", "lw-heroku", "lw-tail"]
|
13
|
-
s.extra_rdoc_files = ["CHANGELOG", "README", "bin/lw-compute", "bin/lw-heroku", "bin/lw-tail", "lib/logworm_client.rb", "lib/logworm_client/logger.rb", "lib/logworm_client/rack.rb", "lib/logworm_utils.rb", "lib/logworm_utils/compute.rb", "lib/logworm_utils/heroku.rb", "lib/logworm_utils/tail.rb"]
|
14
|
-
s.files = ["CHANGELOG", "Manifest", "README", "Rakefile", "bin/lw-compute", "bin/lw-heroku", "bin/lw-tail", "lib/logworm_client.rb", "lib/logworm_client/logger.rb", "lib/logworm_client/rack.rb", "lib/logworm_utils.rb", "lib/logworm_utils/compute.rb", "lib/logworm_utils/heroku.rb", "lib/logworm_utils/tail.rb", "logworm_client.gemspec"]
|
13
|
+
s.extra_rdoc_files = ["CHANGELOG", "README", "bin/lw-compute", "bin/lw-heroku", "bin/lw-tail", "lib/logworm_client.rb", "lib/logworm_client/logger.rb", "lib/logworm_client/rack.rb", "lib/logworm_client/rails.rb", "lib/logworm_utils.rb", "lib/logworm_utils/compute.rb", "lib/logworm_utils/heroku.rb", "lib/logworm_utils/tail.rb"]
|
14
|
+
s.files = ["CHANGELOG", "Manifest", "README", "Rakefile", "bin/lw-compute", "bin/lw-heroku", "bin/lw-tail", "lib/logworm_client.rb", "lib/logworm_client/logger.rb", "lib/logworm_client/rack.rb", "lib/logworm_client/rails.rb", "lib/logworm_utils.rb", "lib/logworm_utils/compute.rb", "lib/logworm_utils/heroku.rb", "lib/logworm_utils/tail.rb", "logworm_client.gemspec"]
|
15
15
|
s.homepage = %q{http://www.logworm.com}
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Logworm_client", "--main", "README"]
|
17
17
|
s.require_paths = ["lib"]
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 4
|
8
|
+
- 0
|
9
|
+
version: 0.4.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Pomelo, LLC
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-04 00:00:00 -05:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -82,6 +82,7 @@ extra_rdoc_files:
|
|
82
82
|
- lib/logworm_client.rb
|
83
83
|
- lib/logworm_client/logger.rb
|
84
84
|
- lib/logworm_client/rack.rb
|
85
|
+
- lib/logworm_client/rails.rb
|
85
86
|
- lib/logworm_utils.rb
|
86
87
|
- lib/logworm_utils/compute.rb
|
87
88
|
- lib/logworm_utils/heroku.rb
|
@@ -97,6 +98,7 @@ files:
|
|
97
98
|
- lib/logworm_client.rb
|
98
99
|
- lib/logworm_client/logger.rb
|
99
100
|
- lib/logworm_client/rack.rb
|
101
|
+
- lib/logworm_client/rails.rb
|
100
102
|
- lib/logworm_utils.rb
|
101
103
|
- lib/logworm_utils/compute.rb
|
102
104
|
- lib/logworm_utils/heroku.rb
|