log_weasel 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -2
- data/README.md +38 -17
- data/lib/log_weasel/middleware.rb +1 -1
- data/lib/log_weasel/railtie.rb +5 -0
- data/lib/log_weasel/resque.rb +1 -1
- data/lib/log_weasel/version.rb +1 -1
- data/lib/log_weasel.rb +27 -3
- data/spec/log_weasel/buffered_logger_spec.rb +0 -1
- data/spec/log_weasel/hoptoad_notifier_spec.rb +1 -5
- data/spec/log_weasel/log_weasel_spec.rb +16 -0
- data/spec/log_weasel/resque_spec.rb +1 -2
- data/spec/spec_helper.rb +1 -1
- metadata +10 -23
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# Log Weasel
|
2
2
|
|
3
|
-
Instrument Rails and Resque with shared transaction IDs
|
3
|
+
Instrument Rails and Resque with shared transaction IDs to trace execution of a unit of work across
|
4
4
|
applications and application instances.
|
5
|
+
|
5
6
|
This particularly handy if you're using a system like <a href="http://www.splunk.com">Splunk</a> to manage your log
|
6
7
|
files across many applications and application instances.
|
7
8
|
|
@@ -19,16 +20,31 @@ Use bundler to install it:
|
|
19
20
|
bundle install
|
20
21
|
</pre>
|
21
22
|
|
23
|
+
## Configure
|
24
|
+
|
25
|
+
In your application initialization (e.g. config/initializers/log_weasel.rb) load and configure Log Weasel with:
|
26
|
+
|
27
|
+
<pre>
|
28
|
+
LogWeasel.configure do |config|
|
29
|
+
config.key = "YOUR_APP"
|
30
|
+
end
|
31
|
+
<pre>
|
32
|
+
|
33
|
+
<code>key</code> is a string that will be included in your transaction IDs and is particularly
|
34
|
+
useful in an environment where a unit of work may span multiple applications.
|
35
|
+
|
22
36
|
## Rack
|
23
37
|
|
24
|
-
Log Weasel provides Rack middleware to create and destroy a transaction for every HTTP request. You can use it
|
25
|
-
in a any web framework that supports Rack (Rails, Sinatra,...)
|
38
|
+
Log Weasel provides Rack middleware to create and destroy a transaction ID for every HTTP request. You can use it
|
39
|
+
in a any web framework that supports Rack (Rails, Sinatra,...) by using <code>LogWeasel::Middleware</code> in your middleware
|
40
|
+
stack.
|
26
41
|
|
27
42
|
### Rails 3
|
28
43
|
|
29
|
-
|
30
|
-
|
31
|
-
|
44
|
+
For Rails 3, we provide a Railtie that automatically registers the Rack middleware.
|
45
|
+
|
46
|
+
All you need to see Log Weasel transaction IDs in your Rails logs is to either use the BufferedLogger provided or
|
47
|
+
customize the formatting of your logger to include <code>LogWeasel::Transaction.id</code>.
|
32
48
|
|
33
49
|
<pre>
|
34
50
|
YourApp::Application.configure do
|
@@ -36,22 +52,12 @@ YourApp::Application.configure do
|
|
36
52
|
config.logger = logger
|
37
53
|
config.action_controller.logger = logger
|
38
54
|
config.active_record.logger = logger
|
39
|
-
|
40
|
-
config.middleware.insert_before Rails::Rack::Logger,
|
41
|
-
LogWeasel::Middleware, :key => 'YOUR_APP'
|
42
55
|
end
|
43
56
|
</pre>
|
44
57
|
|
45
|
-
<code>:key</code> is an optional parameter that is useful in an environment where a unit of work may span multiple applications.
|
46
|
-
|
47
58
|
## Resque
|
48
59
|
|
49
|
-
|
50
|
-
when you configure Resque, for example in a Rails initializer.
|
51
|
-
|
52
|
-
<pre>
|
53
|
-
LogWeasel::Resque.initialize! :key => 'YOUR_APP'
|
54
|
-
</pre>
|
60
|
+
When you configure Log Weasel as described above, it modifies Resque to include transaction IDs in all worker logs.
|
55
61
|
|
56
62
|
Start your Resque worker with <code>VERBOSE=1</code> and you'll see transaction IDs in your Resque logs.
|
57
63
|
|
@@ -121,6 +127,18 @@ and our development log shows:
|
|
121
127
|
[2011-02-14 14:37:10] YOUR_APP-RESQUE-a8e54bfb76718d09f8ed 48453 INFO EchoJob.perform: "hi from Rails console"
|
122
128
|
</pre>
|
123
129
|
|
130
|
+
and our resque log shows:
|
131
|
+
|
132
|
+
<pre>
|
133
|
+
*** got: (Job{default_queue} | EchoJob | ["hello from HelloController"] | {"log_weasel_id"=>"SAMPLE_APP-WEB-a65e45476ff2f5720e23"})
|
134
|
+
*** Running after_fork hook with [(Job{default_queue} | EchoJob | ["hello from HelloController"] | {"log_weasel_id"=>"SAMPLE_APP-WEB-a65e45476ff2f5720e23"})]
|
135
|
+
*** SAMPLE_APP-WEB-a65e45476ff2f5720e23 done: (Job{default_queue} | EchoJob | ["hello from HelloController"] | {"log_weasel_id"=>"SAMPLE_APP-WEB-a65e45476ff2f5720e23"})
|
136
|
+
|
137
|
+
*** got: (Job{default_queue} | EchoJob | ["hi from Rails console"] | {"log_weasel_id"=>"SAMPLE_APP-RESQUE-00919a012476121cf89c"})
|
138
|
+
*** Running after_fork hook with [(Job{default_queue} | EchoJob | ["hi from Rails console"] | {"log_weasel_id"=>"SAMPLE_APP-RESQUE-00919a012476121cf89c"})]
|
139
|
+
*** SAMPLE_APP-RESQUE-00919a012476121cf89c done: (Job{default_queue} | EchoJob | ["hi from Rails console"] | {"log_weasel_id"=>"SAMPLE_APP-RESQUE-00919a012476121cf89c"})
|
140
|
+
</pre>
|
141
|
+
|
124
142
|
Units of work initiated from Resque, for example if using a scheduler like
|
125
143
|
<a href="https://github.com/bvandenbos/resque-scheduler">resque-scheduler</a>,
|
126
144
|
will include 'RESQUE' in the transaction ID to indicate that the work started in Resque.
|
@@ -131,6 +149,9 @@ If you would like to contribute a fix or integrate Log Weasel transaction tracki
|
|
131
149
|
please fork the code, add the fix or feature in your local project and then send a pull request on github.
|
132
150
|
Please ensure that you include a test which verifies your changes.
|
133
151
|
|
152
|
+
## Authors
|
153
|
+
|
154
|
+
<a href="http://github.com/asalant">Alon Salant</a> and <a href="http://github.com/brettfishman">Brett Fishman</a>.
|
134
155
|
|
135
156
|
## LICENSE
|
136
157
|
|
data/lib/log_weasel/resque.rb
CHANGED
@@ -5,7 +5,7 @@ module LogWeasel::Resque
|
|
5
5
|
::Resque::Job.send(:include, LogWeasel::Resque::Job)
|
6
6
|
::Resque.extend(LogWeasel::Resque::ClassMethods)
|
7
7
|
|
8
|
-
key =
|
8
|
+
key = LogWeasel.config.key ? "#{LogWeasel.config.key}-RESQUE" : "RESQUE"
|
9
9
|
|
10
10
|
::Resque.after_fork do |job|
|
11
11
|
LogWeasel::Resque::Callbacks.after_fork job, key
|
data/lib/log_weasel/version.rb
CHANGED
data/lib/log_weasel.rb
CHANGED
@@ -3,8 +3,32 @@ require 'log_weasel/buffered_logger'
|
|
3
3
|
require 'log_weasel/hoptoad_notifier'
|
4
4
|
require 'log_weasel/middleware'
|
5
5
|
require 'log_weasel/resque'
|
6
|
+
require 'log_weasel/railtie' if defined? ::Rails::Railtie
|
6
7
|
|
7
|
-
class << ::HoptoadNotifier
|
8
|
-
include LogWeasel::HoptoadNotifier;
|
9
|
-
end if defined? ::HoptoadNotifier
|
10
8
|
|
9
|
+
module LogWeasel
|
10
|
+
class Config
|
11
|
+
attr_accessor :key
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.config
|
15
|
+
@@config ||= Config.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.configure
|
19
|
+
yield self.config
|
20
|
+
|
21
|
+
if defined? ::HoptoadNotifier
|
22
|
+
class << ::HoptoadNotifier
|
23
|
+
include LogWeasel::HoptoadNotifier;
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
if defined? Resque
|
28
|
+
LogWeasel::Resque.initialize!
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
#Rails.application.class.to_s.split("::").first
|
@@ -1,13 +1,9 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
2
|
require 'hoptoad_notifier'
|
3
|
-
require 'log_weasel/hoptoad_notifier'
|
4
3
|
|
5
4
|
describe LogWeasel::HoptoadNotifier do
|
6
5
|
before do
|
7
|
-
|
8
|
-
include LogWeasel::HoptoadNotifier;
|
9
|
-
end if defined? ::HoptoadNotifier
|
10
|
-
|
6
|
+
LogWeasel.configure {}
|
11
7
|
HoptoadNotifier.configure {}
|
12
8
|
LogWeasel::Transaction.stubs(:id).returns('123')
|
13
9
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
require 'resque'
|
3
|
+
require 'log_weasel'
|
4
|
+
|
5
|
+
describe LogWeasel do
|
6
|
+
|
7
|
+
describe ".configure" do
|
8
|
+
it "stores key" do
|
9
|
+
LogWeasel.configure do |config|
|
10
|
+
config.key = "KEY"
|
11
|
+
end
|
12
|
+
LogWeasel.config.key.should == "KEY"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
2
|
require 'resque'
|
3
|
-
require 'log_weasel/resque'
|
4
3
|
|
5
4
|
describe LogWeasel::Resque do
|
6
5
|
|
7
6
|
before do
|
8
|
-
LogWeasel
|
7
|
+
LogWeasel.configure { |config| config.key = "FOO" }
|
9
8
|
end
|
10
9
|
|
11
10
|
after do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: log_weasel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
version: 0.0.5
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.6
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
8
|
- Alon Salant
|
@@ -14,7 +10,7 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-02-
|
13
|
+
date: 2011-02-22 00:00:00 -08:00
|
18
14
|
default_executable:
|
19
15
|
dependencies:
|
20
16
|
- !ruby/object:Gem::Dependency
|
@@ -24,8 +20,6 @@ dependencies:
|
|
24
20
|
requirements:
|
25
21
|
- - ">="
|
26
22
|
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 0
|
29
23
|
version: "0"
|
30
24
|
type: :development
|
31
25
|
prerelease: false
|
@@ -37,8 +31,6 @@ dependencies:
|
|
37
31
|
requirements:
|
38
32
|
- - ">="
|
39
33
|
- !ruby/object:Gem::Version
|
40
|
-
segments:
|
41
|
-
- 0
|
42
34
|
version: "0"
|
43
35
|
type: :development
|
44
36
|
prerelease: false
|
@@ -50,9 +42,6 @@ dependencies:
|
|
50
42
|
requirements:
|
51
43
|
- - ~>
|
52
44
|
- !ruby/object:Gem::Version
|
53
|
-
segments:
|
54
|
-
- 1
|
55
|
-
- 0
|
56
45
|
version: "1.0"
|
57
46
|
type: :development
|
58
47
|
prerelease: false
|
@@ -64,8 +53,6 @@ dependencies:
|
|
64
53
|
requirements:
|
65
54
|
- - ">="
|
66
55
|
- !ruby/object:Gem::Version
|
67
|
-
segments:
|
68
|
-
- 0
|
69
56
|
version: "0"
|
70
57
|
type: :development
|
71
58
|
prerelease: false
|
@@ -77,9 +64,6 @@ dependencies:
|
|
77
64
|
requirements:
|
78
65
|
- - ~>
|
79
66
|
- !ruby/object:Gem::Version
|
80
|
-
segments:
|
81
|
-
- 3
|
82
|
-
- 0
|
83
67
|
version: "3.0"
|
84
68
|
type: :runtime
|
85
69
|
prerelease: false
|
@@ -105,12 +89,14 @@ files:
|
|
105
89
|
- lib/log_weasel/buffered_logger.rb
|
106
90
|
- lib/log_weasel/hoptoad_notifier.rb
|
107
91
|
- lib/log_weasel/middleware.rb
|
92
|
+
- lib/log_weasel/railtie.rb
|
108
93
|
- lib/log_weasel/resque.rb
|
109
94
|
- lib/log_weasel/transaction.rb
|
110
95
|
- lib/log_weasel/version.rb
|
111
96
|
- log_weasel.gemspec
|
112
97
|
- spec/log_weasel/buffered_logger_spec.rb
|
113
98
|
- spec/log_weasel/hoptoad_notifier_spec.rb
|
99
|
+
- spec/log_weasel/log_weasel_spec.rb
|
114
100
|
- spec/log_weasel/resque_spec.rb
|
115
101
|
- spec/log_weasel/transaction_spec.rb
|
116
102
|
- spec/spec_helper.rb
|
@@ -128,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
128
114
|
requirements:
|
129
115
|
- - ">="
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
hash:
|
117
|
+
hash: 2735436436315165741
|
132
118
|
segments:
|
133
119
|
- 0
|
134
120
|
version: "0"
|
@@ -137,20 +123,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
123
|
requirements:
|
138
124
|
- - ">="
|
139
125
|
- !ruby/object:Gem::Version
|
140
|
-
hash:
|
126
|
+
hash: 2735436436315165741
|
141
127
|
segments:
|
142
128
|
- 0
|
143
129
|
version: "0"
|
144
130
|
requirements: []
|
145
131
|
|
146
132
|
rubyforge_project: log_weasel
|
147
|
-
rubygems_version: 1.
|
133
|
+
rubygems_version: 1.5.2
|
148
134
|
signing_key:
|
149
135
|
specification_version: 3
|
150
|
-
summary: log_weasel-0.0.
|
136
|
+
summary: log_weasel-0.0.6
|
151
137
|
test_files:
|
152
138
|
- spec/log_weasel/buffered_logger_spec.rb
|
153
139
|
- spec/log_weasel/hoptoad_notifier_spec.rb
|
140
|
+
- spec/log_weasel/log_weasel_spec.rb
|
154
141
|
- spec/log_weasel/resque_spec.rb
|
155
142
|
- spec/log_weasel/transaction_spec.rb
|
156
143
|
- spec/spec_helper.rb
|