canvas_statsd 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4616d02f4c3c8ef8030b703e6bbf5d838af47a19
4
- data.tar.gz: 605ae45df5f43db4fb9935bc9183d3e37461d9be
3
+ metadata.gz: f4d82332ae38bf5817fccb8a0bc7558427e9bc1c
4
+ data.tar.gz: b007d80588d91577b3997008fe236386e86551c5
5
5
  SHA512:
6
- metadata.gz: 3ee48720a9b97a96c005f612e8b1b1eb3fc530e0677686d24acd8cc0109936f5d9bdd75079ec0bc36cae90423c9eeec7bcb81e32b500c905236b76cb497f839f
7
- data.tar.gz: b3a03993abfc29f5c500e33d14e3bbbf619bcb31d2fc6dc3efb27525a8db5e463d7c1d25dfc472e7d2aab73b5ad49e0439e70048a7293ad76467d414482a28f1
6
+ metadata.gz: 623fdba2e7573d930fa7ae361703957e32ad476a270e3ca6b27116e1ca63e6b2866a55c76cfb2c53f56416e3453133d3055de62153719350d5d6753727f077e2
7
+ data.tar.gz: c4b10a26a2bdec126571e3128ae68a68060f550eb05178e25c30a99b595a17f715110d73244e35bd024ec64814840c2944ad6846c23d564bcd44ef1692819656
data/lib/canvas_statsd.rb CHANGED
@@ -8,6 +8,8 @@ module CanvasStatsd
8
8
  require "canvas_statsd/counter"
9
9
  require "canvas_statsd/sql_tracker"
10
10
  require "canvas_statsd/default_tracking"
11
+ require "canvas_statsd/request_logger"
12
+ require "canvas_statsd/null_logger"
11
13
 
12
14
  def self.settings
13
15
  @settings || env_settings
@@ -5,7 +5,8 @@ module CanvasStatsd
5
5
  @sql_tracker = CanvasStatsd::SqlTracker.new(blocked_names: ['SCHEMA'])
6
6
 
7
7
  def self.track_default_metrics(options={})
8
- options = {sql: true, active_record: true}.merge(options)
8
+ options = {sql: true, active_record: true, logger: nil}.merge(options)
9
+ @logger = RequestLogger.new(options[:logger])
9
10
  track_timing
10
11
  track_sql if !!options[:sql]
11
12
  track_active_record if !!options[:active_record]
@@ -57,6 +58,7 @@ module CanvasStatsd
57
58
  request_stat.sql_write_count = @sql_tracker.num_writes if @tracking_sql
58
59
  request_stat.sql_cache_count = @sql_tracker.num_caches if @tracking_sql
59
60
  request_stat.report
61
+ @logger.log(request_stat)
60
62
  end
61
63
 
62
64
  end
@@ -0,0 +1,11 @@
1
+ require 'logger'
2
+
3
+ module CanvasStatsd
4
+ class NullLogger < Logger
5
+ def initialize(*args)
6
+ end
7
+
8
+ def add(*args, &block)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ module CanvasStatsd
2
+ class RequestLogger
3
+
4
+ VALUES_MAP = {
5
+ total: :ms,
6
+ view: :view_runtime,
7
+ db: :db_runtime,
8
+ sql_read: :sql_read_count,
9
+ sql_write: :sql_write_count,
10
+ sql_cache: :sql_cache_count,
11
+ active_record: :ar_count
12
+ }.freeze
13
+
14
+
15
+ def initialize(logger)
16
+ @logger = logger || CanvasStatsd::NullLogger.new
17
+ end
18
+
19
+ def log(request_stat, header=nil)
20
+ @logger.info(build_log_message(request_stat, header))
21
+ end
22
+
23
+ def build_log_message(request_stat, header=nil)
24
+ header ||= "STATSD"
25
+ message = "[#{header}]"
26
+ VALUES_MAP.each do |k,v|
27
+ value = request_stat.respond_to?(v) ? request_stat.send(v) : nil
28
+ message += " (#{k}: #{value})" if value
29
+ end
30
+ message
31
+ end
32
+
33
+ end
34
+ end
@@ -20,6 +20,13 @@ describe CanvasStatsd::DefaultTracking do
20
20
  expect(CanvasStatsd::DefaultTracking).not_to receive(:track_active_record)
21
21
  CanvasStatsd::DefaultTracking.track_default_metrics active_record: false
22
22
  end
23
+
24
+ it 'should delegate log messages to the optional logger' do
25
+ log_double = double()
26
+ expect(log_double).to receive(:info)
27
+ CanvasStatsd::DefaultTracking.track_default_metrics logger: log_double
28
+ CanvasStatsd::DefaultTracking.finalize_processing('name', 1000, 10001, 1234, {})
29
+ end
23
30
  end
24
31
 
25
32
  describe '#track_active_record' do
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe CanvasStatsd::NullLogger do
4
+
5
+ describe 'initialize' do
6
+ it 'takes any arguments' do
7
+ expect{CanvasStatsd::NullLogger.new}.to_not raise_error
8
+ expect{CanvasStatsd::NullLogger.new(1, 2, 3)}.to_not raise_error
9
+ end
10
+ end
11
+
12
+ describe 'debug, info, warn, fatal, and unknown' do
13
+ it 'should all no-op instead of logging' do
14
+ log_path = 'spec/support/test.log'
15
+ File.open(log_path, 'w') { |f| f.write('') } # empty log file
16
+ logger = CanvasStatsd::NullLogger.new(log_path)
17
+ %w[debug info warn error fatal unknown].each { |m| logger.send(m, 'foo') }
18
+ log_contents = File.read(log_path)
19
+ expect(log_contents).to eq ''
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+ require 'logger'
3
+
4
+ describe CanvasStatsd::RequestLogger do
5
+
6
+ describe '#build_log_message' do
7
+ before :all do
8
+ @logger = CanvasStatsd::RequestLogger.new(Logger.new(STDOUT))
9
+ end
10
+ it 'should include the supplied header' do
11
+ request_stat = double('request_stat')
12
+ results = @logger.build_log_message(request_stat, 'FOO_STATS')
13
+ expect(results).to eq("[FOO_STATS]")
14
+ end
15
+ it 'should fallback to the default header' do
16
+ request_stat = double('request_stat')
17
+ results = @logger.build_log_message(request_stat)
18
+ expect(results).to eq("[STATSD]")
19
+ end
20
+ it 'should include stats that are available' do
21
+ request_stat = double('request_stat')
22
+ request_stat.stub(:ms).and_return(100.2)
23
+ request_stat.stub(:ar_count).and_return(24)
24
+ results = @logger.build_log_message(request_stat)
25
+ expect(results).to eq("[STATSD] (total: 100.2) (active_record: 24)")
26
+ end
27
+ it 'should not include nil stats' do
28
+ request_stat = double('request_stat')
29
+ request_stat.stub(:ms).and_return(100.2)
30
+ request_stat.stub(:ar_count).and_return(nil)
31
+ results = @logger.build_log_message(request_stat)
32
+ expect(results).to eq("[STATSD] (total: 100.2)")
33
+ end
34
+ end
35
+
36
+ describe '#log' do
37
+ it 'should send info method to logger if logger exists' do
38
+ std_out_logger = Logger.new(STDOUT)
39
+ logger = CanvasStatsd::RequestLogger.new(std_out_logger)
40
+ expect(std_out_logger).to receive(:info)
41
+ request_stat = double('request_stat')
42
+ logger.log(request_stat)
43
+ end
44
+ it 'should send info method with build_log_message output if logger exists' do
45
+ std_out_logger = Logger.new(STDOUT)
46
+ logger = CanvasStatsd::RequestLogger.new(std_out_logger)
47
+ expect(std_out_logger).to receive(:info).with("[DEFAULT_METRICS] (total: 100.2)")
48
+ request_stat = double('request_stat')
49
+ request_stat.stub(:ms).and_return(100.2)
50
+ logger.log(request_stat, "DEFAULT_METRICS")
51
+ end
52
+ end
53
+
54
+ end
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_statsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Cloward
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-16 00:00:00.000000000 Z
11
+ date: 2015-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: statsd-ruby
@@ -90,16 +90,21 @@ files:
90
90
  - lib/canvas_statsd.rb
91
91
  - lib/canvas_statsd/counter.rb
92
92
  - lib/canvas_statsd/default_tracking.rb
93
+ - lib/canvas_statsd/null_logger.rb
94
+ - lib/canvas_statsd/request_logger.rb
93
95
  - lib/canvas_statsd/request_stat.rb
94
96
  - lib/canvas_statsd/sql_tracker.rb
95
97
  - lib/canvas_statsd/statsd.rb
96
98
  - spec/canvas_statsd/canvas_statsd_spec.rb
97
99
  - spec/canvas_statsd/counter_spec.rb
98
100
  - spec/canvas_statsd/default_tracking_spec.rb
101
+ - spec/canvas_statsd/null_logger_spec.rb
102
+ - spec/canvas_statsd/request_logger_spec.rb
99
103
  - spec/canvas_statsd/request_stat_spec.rb
100
104
  - spec/canvas_statsd/sql_tracker_spec.rb
101
105
  - spec/canvas_statsd/statsd_spec.rb
102
106
  - spec/spec_helper.rb
107
+ - spec/support/test.log
103
108
  - test.sh
104
109
  homepage: https://github.com/instructure/canvas_statsd
105
110
  licenses:
@@ -129,8 +134,11 @@ test_files:
129
134
  - spec/canvas_statsd/canvas_statsd_spec.rb
130
135
  - spec/canvas_statsd/counter_spec.rb
131
136
  - spec/canvas_statsd/default_tracking_spec.rb
137
+ - spec/canvas_statsd/null_logger_spec.rb
138
+ - spec/canvas_statsd/request_logger_spec.rb
132
139
  - spec/canvas_statsd/request_stat_spec.rb
133
140
  - spec/canvas_statsd/sql_tracker_spec.rb
134
141
  - spec/canvas_statsd/statsd_spec.rb
135
142
  - spec/spec_helper.rb
143
+ - spec/support/test.log
136
144
  has_rdoc: