timber 2.6.2 → 3.0.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.
- checksums.yaml +5 -5
- data/.travis.yml +8 -38
- data/CHANGELOG.md +9 -0
- data/README.md +30 -284
- data/Rakefile +78 -0
- data/lib/timber.rb +6 -6
- data/lib/timber/config.rb +1 -83
- data/lib/timber/config/integrations.rb +1 -47
- data/lib/timber/context.rb +3 -24
- data/lib/timber/contexts.rb +2 -30
- data/lib/timber/contexts/http.rb +16 -36
- data/lib/timber/contexts/release.rb +12 -23
- data/lib/timber/contexts/runtime.rb +9 -36
- data/lib/timber/contexts/session.rb +8 -21
- data/lib/timber/contexts/system.rb +9 -16
- data/lib/timber/contexts/user.rb +13 -33
- data/lib/timber/current_context.rb +16 -78
- data/lib/timber/event.rb +12 -9
- data/lib/timber/events.rb +1 -33
- data/lib/timber/events/controller_call.rb +20 -31
- data/lib/timber/events/error.rb +18 -26
- data/lib/timber/events/exception.rb +1 -0
- data/lib/timber/events/sql_query.rb +14 -24
- data/lib/timber/events/template_render.rb +13 -24
- data/lib/timber/integration.rb +1 -1
- data/lib/timber/integrator.rb +1 -1
- data/lib/timber/log_devices/http.rb +98 -19
- data/lib/timber/log_entry.rb +6 -24
- data/lib/timber/logger.rb +5 -14
- data/lib/timber/util.rb +1 -6
- data/lib/timber/util/non_nil_hash_builder.rb +3 -1
- data/lib/timber/version.rb +1 -1
- data/spec/README.md +2 -8
- data/spec/spec_helper.rb +0 -7
- data/spec/support/timber.rb +1 -3
- data/spec/timber/current_context_spec.rb +12 -50
- data/spec/timber/events/controller_call_spec.rb +4 -4
- data/spec/timber/events/error_spec.rb +4 -9
- data/spec/timber/log_devices/http_spec.rb +26 -2
- data/spec/timber/log_entry_spec.rb +12 -6
- data/spec/timber/logger_spec.rb +27 -68
- data/timber.gemspec +1 -1
- metadata +5 -139
- data/gemfiles/rails-3.0.gemfile +0 -5
- data/gemfiles/rails-3.1.gemfile +0 -5
- data/gemfiles/rails-3.2.gemfile +0 -5
- data/gemfiles/rails-4.0.gemfile +0 -9
- data/gemfiles/rails-4.1.gemfile +0 -9
- data/gemfiles/rails-4.2.gemfile +0 -9
- data/gemfiles/rails-5.0.gemfile +0 -9
- data/gemfiles/rails-5.1.gemfile +0 -9
- data/gemfiles/rails-edge.gemfile +0 -7
- data/lib/timber/cli.rb +0 -60
- data/lib/timber/cli/api.rb +0 -183
- data/lib/timber/cli/api/application.rb +0 -34
- data/lib/timber/cli/config_file.rb +0 -71
- data/lib/timber/cli/file_helper.rb +0 -53
- data/lib/timber/cli/installer.rb +0 -70
- data/lib/timber/cli/installers.rb +0 -102
- data/lib/timber/cli/installers/config_file.rb +0 -51
- data/lib/timber/cli/installers/other.rb +0 -59
- data/lib/timber/cli/installers/rails.rb +0 -225
- data/lib/timber/cli/installers/root.rb +0 -116
- data/lib/timber/cli/io.rb +0 -100
- data/lib/timber/cli/io/ansi.rb +0 -22
- data/lib/timber/cli/io/messages.rb +0 -198
- data/lib/timber/cli/os_helper.rb +0 -74
- data/lib/timber/config/integrations/rack.rb +0 -74
- data/lib/timber/contexts/custom.rb +0 -44
- data/lib/timber/contexts/organization.rb +0 -48
- data/lib/timber/events/custom.rb +0 -53
- data/lib/timber/events/http_request.rb +0 -71
- data/lib/timber/events/http_response.rb +0 -81
- data/lib/timber/frameworks.rb +0 -19
- data/lib/timber/frameworks/rails.rb +0 -27
- data/lib/timber/integrations.rb +0 -29
- data/lib/timber/integrations/action_controller.rb +0 -18
- data/lib/timber/integrations/action_controller/log_subscriber.rb +0 -27
- data/lib/timber/integrations/action_controller/log_subscriber/timber_log_subscriber.rb +0 -46
- data/lib/timber/integrations/action_dispatch.rb +0 -23
- data/lib/timber/integrations/action_dispatch/debug_exceptions.rb +0 -53
- data/lib/timber/integrations/action_view.rb +0 -18
- data/lib/timber/integrations/action_view/log_subscriber.rb +0 -27
- data/lib/timber/integrations/action_view/log_subscriber/timber_log_subscriber.rb +0 -83
- data/lib/timber/integrations/active_record.rb +0 -18
- data/lib/timber/integrations/active_record/log_subscriber.rb +0 -26
- data/lib/timber/integrations/active_record/log_subscriber/timber_log_subscriber.rb +0 -53
- data/lib/timber/integrations/rack.rb +0 -27
- data/lib/timber/integrations/rack/error_event.rb +0 -64
- data/lib/timber/integrations/rack/http_context.rb +0 -27
- data/lib/timber/integrations/rack/http_events.rb +0 -210
- data/lib/timber/integrations/rack/middleware.rb +0 -28
- data/lib/timber/integrations/rack/session_context.rb +0 -65
- data/lib/timber/integrations/rack/user_context.rb +0 -135
- data/lib/timber/integrations/rails.rb +0 -22
- data/lib/timber/integrations/rails/rack_logger.rb +0 -60
- data/lib/timber/overrides.rb +0 -12
- data/lib/timber/overrides/active_support_3_tagged_logging.rb +0 -111
- data/lib/timber/overrides/active_support_buffered_logger.rb +0 -22
- data/lib/timber/overrides/active_support_tagged_logging.rb +0 -66
- data/lib/timber/overrides/lograge.rb +0 -18
- data/lib/timber/overrides/rails_stdout_logging.rb +0 -21
- data/lib/timber/util/active_support_log_subscriber.rb +0 -37
- data/lib/timber/util/attribute_normalizer.rb +0 -89
- data/lib/timber/util/hash.rb +0 -90
- data/lib/timber/util/request.rb +0 -72
- data/lib/timber/util/struct.rb +0 -16
- data/spec/rails/tagged_logging_spec.rb +0 -44
- data/spec/support/action_controller.rb +0 -8
- data/spec/support/active_record.rb +0 -32
- data/spec/support/rails.rb +0 -67
- data/spec/support/rails/templates/_partial.html +0 -1
- data/spec/support/rails/templates/template.html +0 -1
- data/spec/timber/cli/config_file_spec.rb +0 -26
- data/spec/timber/cli/installers/config_file_spec.rb +0 -36
- data/spec/timber/cli/installers/other_spec.rb +0 -49
- data/spec/timber/cli/installers/rails_spec.rb +0 -364
- data/spec/timber/cli/installers/root_spec.rb +0 -73
- data/spec/timber/config_spec.rb +0 -28
- data/spec/timber/contexts/custom_spec.rb +0 -11
- data/spec/timber/contexts/organization_spec.rb +0 -11
- data/spec/timber/contexts/runtime_spec.rb +0 -11
- data/spec/timber/contexts/system_spec.rb +0 -11
- data/spec/timber/contexts/user_spec.rb +0 -11
- data/spec/timber/contexts_spec.rb +0 -49
- data/spec/timber/event_spec.rb +0 -10
- data/spec/timber/events/custom_spec.rb +0 -36
- data/spec/timber/events/http_request_spec.rb +0 -32
- data/spec/timber/events/http_response_spec.rb +0 -12
- data/spec/timber/events_spec.rb +0 -55
- data/spec/timber/integrations/action_controller/log_subscriber_spec.rb +0 -55
- data/spec/timber/integrations/action_dispatch/debug_exceptions_spec.rb +0 -53
- data/spec/timber/integrations/action_view/log_subscriber_spec.rb +0 -115
- data/spec/timber/integrations/active_record/log_subscriber_spec.rb +0 -46
- data/spec/timber/integrations/rack/error_event_spec.rb +0 -63
- data/spec/timber/integrations/rack/http_context_spec.rb +0 -60
- data/spec/timber/integrations/rack/http_events_spec.rb +0 -101
- data/spec/timber/integrations/rack/session_context_spec.rb +0 -62
- data/spec/timber/integrations/rails/rack_logger_spec.rb +0 -58
- data/spec/timber/util/attribute_normalizer_spec.rb +0 -90
- data/spec/timber/util/hash_spec.rb +0 -30
- data/spec/timber/util/request_spec.rb +0 -10
@@ -1,115 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
if defined?(::ActionView)
|
4
|
-
describe Timber::Integrations::ActionView::LogSubscriber do
|
5
|
-
let(:time) { Time.utc(2016, 9, 1, 12, 0, 0) }
|
6
|
-
let(:io) { StringIO.new }
|
7
|
-
let(:logger) do
|
8
|
-
logger = Timber::Logger.new(io)
|
9
|
-
logger.level = ::Logger::WARN
|
10
|
-
logger
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "insert!" do
|
14
|
-
around(:each) do |example|
|
15
|
-
class ActionViewLogSubscriberController < ActionController::Base
|
16
|
-
layout nil
|
17
|
-
|
18
|
-
def index
|
19
|
-
render template: "template"
|
20
|
-
end
|
21
|
-
|
22
|
-
def method_for_action(action_name)
|
23
|
-
action_name
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
::RailsApp.routes.draw do
|
28
|
-
get 'action_view_log_subscriber' => 'action_view_log_subscriber#index'
|
29
|
-
end
|
30
|
-
|
31
|
-
with_rails_logger(logger) do
|
32
|
-
Timecop.freeze(time) { example.run }
|
33
|
-
end
|
34
|
-
|
35
|
-
Object.send(:remove_const, :ActionViewLogSubscriberController)
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#render_template" do
|
39
|
-
it "should not log if the level is not sufficient" do
|
40
|
-
dispatch_rails_request("/action_view_log_subscriber")
|
41
|
-
expect(io.string).to eq("")
|
42
|
-
end
|
43
|
-
|
44
|
-
context "with an info level" do
|
45
|
-
around(:each) do |example|
|
46
|
-
old_level = logger.level
|
47
|
-
logger.level = ::Logger::INFO
|
48
|
-
example.run
|
49
|
-
logger.level = old_level
|
50
|
-
end
|
51
|
-
|
52
|
-
it "should log a template render event once" do
|
53
|
-
dispatch_rails_request("/action_view_log_subscriber")
|
54
|
-
lines = clean_lines(io.string.split("\n"))
|
55
|
-
expect(lines[2].strip).to start_with("Rendered spec/support/rails/templates/template.html (0.0ms) @metadata {\"level\":\"info\"")
|
56
|
-
expect(lines[2]).to include("\"event\":{\"template_render\":{\"name\":\"spec/support/rails/templates/template.html\",\"time_ms\":0.0}},")
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
if defined?(described_class::TimberLogSubscriber)
|
63
|
-
describe described_class::TimberLogSubscriber do
|
64
|
-
let(:event) do
|
65
|
-
event = Struct.new(:duration, :payload)
|
66
|
-
event.new(2, identifier: "path/to/template.html")
|
67
|
-
end
|
68
|
-
|
69
|
-
around(:each) do |example|
|
70
|
-
old_level = logger.level
|
71
|
-
logger.level = ::Logger::INFO
|
72
|
-
example.run
|
73
|
-
logger.level = old_level
|
74
|
-
end
|
75
|
-
|
76
|
-
describe "#render_template" do
|
77
|
-
it "should render the collection" do
|
78
|
-
log_subscriber = described_class.new
|
79
|
-
allow(log_subscriber).to receive(:logger).and_return(logger)
|
80
|
-
log_subscriber.render_template(event)
|
81
|
-
expect(io.string.strip).to start_with("Rendered path/to/template.html (2.0ms) @metadata")
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe "#render_partial" do
|
86
|
-
it "should render the collection" do
|
87
|
-
log_subscriber = described_class.new
|
88
|
-
allow(log_subscriber).to receive(:logger).and_return(logger)
|
89
|
-
log_subscriber.render_partial(event)
|
90
|
-
expect(io.string.strip).to start_with("Rendered path/to/template.html (2.0ms) @metadata")
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
describe "#render_collection" do
|
95
|
-
it "should render the collection" do
|
96
|
-
log_subscriber = described_class.new
|
97
|
-
allow(log_subscriber).to receive(:logger).and_return(logger)
|
98
|
-
log_subscriber.render_collection(event)
|
99
|
-
|
100
|
-
if log_subscriber.respond_to?(:render_count, true)
|
101
|
-
expect(io.string.strip).to start_with("Rendered collection of path/to/template.html [ times] (2.0ms) @metadata ")
|
102
|
-
else
|
103
|
-
expect(io.string.strip).to start_with("Rendered path/to/template.html (2.0ms) @metadata")
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
# Remove blank lines since Rails does this to space out requests in the logs
|
111
|
-
def clean_lines(lines)
|
112
|
-
lines.select { |line| !line.start_with?(" @metadata") }
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
if defined?(::ActiveRecord)
|
4
|
-
describe Timber::Integrations::ActiveRecord::LogSubscriber do
|
5
|
-
let(:time) { Time.utc(2016, 9, 1, 12, 0, 0) }
|
6
|
-
let(:io) { StringIO.new }
|
7
|
-
let(:logger) do
|
8
|
-
logger = Timber::Logger.new(io)
|
9
|
-
logger.level = ::Logger::INFO
|
10
|
-
logger
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "#insert!" do
|
14
|
-
around(:each) do |example|
|
15
|
-
with_rails_logger(logger) do
|
16
|
-
Timecop.freeze(time) { example.run }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should not log if the level is not sufficient" do
|
21
|
-
ActiveRecord::Base.connection.execute("select * from users")
|
22
|
-
expect(io.string).to eq("")
|
23
|
-
end
|
24
|
-
|
25
|
-
context "with an info level" do
|
26
|
-
around(:each) do |example|
|
27
|
-
old_level = logger.level
|
28
|
-
logger.level = ::Logger::DEBUG
|
29
|
-
example.run
|
30
|
-
logger.level = old_level
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should log the sql query" do
|
34
|
-
ActiveRecord::Base.connection.execute("select * from users")
|
35
|
-
# Rails 4.X adds random spaces :/
|
36
|
-
string = io.string.gsub(" ORDER BY", " ORDER BY")
|
37
|
-
string = string.gsub(" ORDER BY", " ORDER BY")
|
38
|
-
expect(string).to include("select * from users")
|
39
|
-
expect(string).to include("@metadata")
|
40
|
-
expect(string).to include("\"level\":\"debug\"")
|
41
|
-
expect(string).to include("\"event\":{\"sql_query\"")
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
if defined?(::Rack)
|
4
|
-
describe Timber::Integrations::Rack::ErrorEvent do
|
5
|
-
let(:time) { Time.utc(2016, 9, 1, 12, 0, 0) }
|
6
|
-
let(:io) { StringIO.new }
|
7
|
-
let(:logger) do
|
8
|
-
logger = Timber::Logger.new(io)
|
9
|
-
logger.level = ::Logger::INFO
|
10
|
-
logger
|
11
|
-
end
|
12
|
-
|
13
|
-
around(:each) do |example|
|
14
|
-
class RackErrorController < ActionController::Base
|
15
|
-
layout nil
|
16
|
-
|
17
|
-
hook_name = respond_to?(:before_action) ? "before_action" : "before_filter"
|
18
|
-
send(hook_name) do
|
19
|
-
raise "Boom!"
|
20
|
-
end
|
21
|
-
|
22
|
-
def index
|
23
|
-
Thread.current[:_timber_context_snapshot] = Timber::CurrentContext.instance.snapshot
|
24
|
-
render json: {}
|
25
|
-
end
|
26
|
-
|
27
|
-
def method_for_action(action_name)
|
28
|
-
action_name
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
::RailsApp.routes.draw do
|
33
|
-
get '/rack_error' => 'rack_error#index'
|
34
|
-
end
|
35
|
-
|
36
|
-
with_rails_logger(logger) do
|
37
|
-
Timecop.freeze(time) { example.run }
|
38
|
-
end
|
39
|
-
|
40
|
-
Object.send(:remove_const, :RackErrorController)
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "#process" do
|
44
|
-
it "should log the exception" do
|
45
|
-
allow(Benchmark).to receive(:ms).and_return(1).and_yield
|
46
|
-
|
47
|
-
expect { dispatch_rails_request("/rack_error") }.to raise_error(RuntimeError)
|
48
|
-
|
49
|
-
lines = clean_lines(io.string.split("\n"))
|
50
|
-
expect(lines.length).to eq(3)
|
51
|
-
|
52
|
-
expect(lines[0]).to start_with("Started GET \"/rack_error\" @metadata ")
|
53
|
-
expect(lines[1]).to start_with("Processing by RackErrorController#index as HTML @metadata ")
|
54
|
-
expect(lines[2]).to start_with("RuntimeError (Boom!) @metadata")
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
# Remove blank lines since Rails does this to space out requests in the logs
|
59
|
-
def clean_lines(lines)
|
60
|
-
lines.select { |line| !line.start_with?(" @metadat") }
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
if defined?(::Rack)
|
4
|
-
describe Timber::Integrations::Rack::HTTPContext do
|
5
|
-
let(:time) { Time.utc(2016, 9, 1, 12, 0, 0) }
|
6
|
-
let(:io) { StringIO.new }
|
7
|
-
let(:logger) do
|
8
|
-
logger = Timber::Logger.new(io)
|
9
|
-
logger.level = ::Logger::INFO
|
10
|
-
logger
|
11
|
-
end
|
12
|
-
|
13
|
-
around(:each) do |example|
|
14
|
-
class RackHttpController < ActionController::Base
|
15
|
-
layout nil
|
16
|
-
|
17
|
-
def index
|
18
|
-
Thread.current[:_timber_context_snapshot] = Timber::CurrentContext.instance.snapshot
|
19
|
-
render json: {}
|
20
|
-
end
|
21
|
-
|
22
|
-
def method_for_action(action_name)
|
23
|
-
action_name
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
::RailsApp.routes.draw do
|
28
|
-
get '/rack_http' => 'rack_http#index'
|
29
|
-
end
|
30
|
-
|
31
|
-
with_rails_logger(logger) do
|
32
|
-
Timecop.freeze(time) { example.run }
|
33
|
-
end
|
34
|
-
|
35
|
-
Object.send(:remove_const, :RackHttpController)
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#process" do
|
39
|
-
it "should set the context" do
|
40
|
-
allow(Benchmark).to receive(:ms).and_return(1).and_yield
|
41
|
-
|
42
|
-
dispatch_rails_request("/rack_http")
|
43
|
-
http_context = Thread.current[:_timber_context_snapshot][:http]
|
44
|
-
|
45
|
-
expect(http_context).to eq({:host => "example.org", :method=>"GET", :path=>"/rack_http", :remote_addr=>"123.456.789.10", :request_id=>"unique-request-id-1234"})
|
46
|
-
|
47
|
-
lines = clean_lines(io.string.split("\n"))
|
48
|
-
expect(lines.length).to eq(3)
|
49
|
-
lines.each do |line|
|
50
|
-
expect(line).to include("\"http\":{\"host\":\"example.org\",\"method\":\"GET\",\"path\":\"/rack_http\",\"remote_addr\":\"123.456.789.10\",\"request_id\":\"unique-request-id-1234\"}")
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
# Remove blank lines since Rails does this to space out requests in the logs
|
56
|
-
def clean_lines(lines)
|
57
|
-
lines.select { |line| !line.start_with?(" @metadat") }
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
@@ -1,101 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
if defined?(::Rack)
|
4
|
-
describe Timber::Integrations::Rack::HTTPEvents do
|
5
|
-
let(:time) { Time.utc(2016, 9, 1, 12, 0, 0) }
|
6
|
-
let(:io) { StringIO.new }
|
7
|
-
let(:logger) do
|
8
|
-
logger = Timber::Logger.new(io)
|
9
|
-
logger.level = ::Logger::INFO
|
10
|
-
logger
|
11
|
-
end
|
12
|
-
|
13
|
-
around(:each) do |example|
|
14
|
-
class RackHttpController < ActionController::Base
|
15
|
-
layout nil
|
16
|
-
|
17
|
-
def index
|
18
|
-
Thread.current[:_timber_context_snapshot] = Timber::CurrentContext.instance.snapshot
|
19
|
-
render json: {}
|
20
|
-
end
|
21
|
-
|
22
|
-
def method_for_action(action_name)
|
23
|
-
action_name
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
::RailsApp.routes.draw do
|
28
|
-
get '/rack_http' => 'rack_http#index'
|
29
|
-
end
|
30
|
-
|
31
|
-
with_rails_logger(logger) do
|
32
|
-
Timecop.freeze(time) { example.run }
|
33
|
-
end
|
34
|
-
|
35
|
-
Object.send(:remove_const, :RackHttpController)
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#process" do
|
39
|
-
it "should log the events" do
|
40
|
-
allow(Benchmark).to receive(:ms).and_return(1).and_yield
|
41
|
-
|
42
|
-
dispatch_rails_request("/rack_http")
|
43
|
-
|
44
|
-
lines = clean_lines(io.string.split("\n"))
|
45
|
-
expect(lines.length).to eq(3)
|
46
|
-
|
47
|
-
expect(lines[0]).to start_with("Started GET \"/rack_http\" @metadata ")
|
48
|
-
expect(lines[1]).to start_with("Processing by RackHttpController#index as HTML @metadata ")
|
49
|
-
expect(lines[2]).to start_with("Completed 200 OK in 0.0ms @metadata ")
|
50
|
-
end
|
51
|
-
|
52
|
-
context "with the route silenced" do
|
53
|
-
around(:each) do |example|
|
54
|
-
described_class.silence_request = lambda do |rack_env, rack_request|
|
55
|
-
rack_request.path == "/rack_http"
|
56
|
-
end
|
57
|
-
|
58
|
-
example.run
|
59
|
-
|
60
|
-
described_class.silence_request = nil
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should silence the logs" do
|
64
|
-
allow(Benchmark).to receive(:ms).and_return(1).and_yield
|
65
|
-
|
66
|
-
dispatch_rails_request("/rack_http")
|
67
|
-
|
68
|
-
lines = clean_lines(io.string.split("\n"))
|
69
|
-
expect(lines.length).to eq(0)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
context "collapsed into a single event" do
|
74
|
-
around(:each) do |example|
|
75
|
-
described_class.collapse_into_single_event = true
|
76
|
-
|
77
|
-
example.run
|
78
|
-
|
79
|
-
described_class.collapse_into_single_event = nil
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should silence the logs" do
|
83
|
-
allow(Benchmark).to receive(:ms).and_return(1).and_yield
|
84
|
-
|
85
|
-
dispatch_rails_request("/rack_http")
|
86
|
-
|
87
|
-
lines = clean_lines(io.string.split("\n"))
|
88
|
-
expect(lines.length).to eq(2)
|
89
|
-
|
90
|
-
expect(lines[0]).to start_with("Processing by RackHttpController#index as HTML @metadata ")
|
91
|
-
expect(lines[1]).to start_with("GET /rack_http completed with 200 OK in 0.0ms @metadata ")
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
# Remove blank lines since Rails does this to space out requests in the logs
|
97
|
-
def clean_lines(lines)
|
98
|
-
lines.select { |line| !line.start_with?(" @metadat") }
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
if defined?(::Rack)
|
4
|
-
describe Timber::Integrations::Rack::SessionContext do
|
5
|
-
let(:time) { Time.utc(2016, 9, 1, 12, 0, 0) }
|
6
|
-
let(:io) { StringIO.new }
|
7
|
-
let(:logger) do
|
8
|
-
logger = Timber::Logger.new(io)
|
9
|
-
logger.level = ::Logger::INFO
|
10
|
-
logger
|
11
|
-
end
|
12
|
-
|
13
|
-
around(:each) do |example|
|
14
|
-
class RackHttpController < ActionController::Base
|
15
|
-
layout nil
|
16
|
-
|
17
|
-
def index
|
18
|
-
Thread.current[:_timber_context_snapshot] = Timber::CurrentContext.instance.snapshot
|
19
|
-
render json: {}
|
20
|
-
end
|
21
|
-
|
22
|
-
def method_for_action(action_name)
|
23
|
-
action_name
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
::RailsApp.routes.draw do
|
28
|
-
get '/rack_http' => 'rack_http#index'
|
29
|
-
end
|
30
|
-
|
31
|
-
with_rails_logger(logger) do
|
32
|
-
Timecop.freeze(time) { example.run }
|
33
|
-
end
|
34
|
-
|
35
|
-
Object.send(:remove_const, :RackHttpController)
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#process" do
|
39
|
-
it "should set the context" do
|
40
|
-
allow(Benchmark).to receive(:ms).and_return(1).and_yield
|
41
|
-
|
42
|
-
expect_any_instance_of(described_class).to receive(:extract_from_cookie).exactly(1).times.and_return("1234")
|
43
|
-
|
44
|
-
dispatch_rails_request("/rack_http")
|
45
|
-
session_context = Thread.current[:_timber_context_snapshot][:session]
|
46
|
-
|
47
|
-
expect(session_context).to eq({:id => "1234"})
|
48
|
-
|
49
|
-
lines = clean_lines(io.string.split("\n"))
|
50
|
-
expect(lines.length).to eq(3)
|
51
|
-
lines.each do |line|
|
52
|
-
expect(line).to include("\"session\":{\"id\":\"1234\"}")
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
# Remove blank lines since Rails does this to space out requests in the logs
|
58
|
-
def clean_lines(lines)
|
59
|
-
lines.select { |line| !line.start_with?(" @metadat") }
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|