scout_apm 2.4.0 → 2.4.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 35153897d05053c188035cea90a9c9821abcd4cf
4
- data.tar.gz: 94fe5aee4fa214256fe31ffe643973274f2d66fb
3
+ metadata.gz: fe3261e9eced978064607b53499cc6293be5a058
4
+ data.tar.gz: 6d676264b1b042a9cbe355e09353a861b7bcc8b8
5
5
  SHA512:
6
- metadata.gz: efef5649e203008c653a8fba69e1c28de35f510d831ff3e47a4483fda8e92116cd8aa5e1e64d3ab7ffe63cef9f03113987f953cc78f65a05af076be04fa1fb7b
7
- data.tar.gz: 37966ab847e9c50ce354c9f8a2fe3c4ecfda397e091fc2d89f02b7816b2b14bfdd8e4bf56528a1f6572e9bb92b26ab6438b7a4bb83709969c887a8f904a810a0
6
+ metadata.gz: 2fd76e1a585a61ad5cf2e1ded0a6e83dd958697ef79ca6cd95cc4643a7d07844ef0da37096d1a8303ee8e6c1fc56b33ad5436e20548d289f8a7aeb144e916d74
7
+ data.tar.gz: 9fda0efefb37ef6707950e03d4fdd745299e3f3921cebd8e3f56680b9f635bfc7839719329fce8b32ac34d51447561b27d805749303337fb65b15448edf410e2
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,7 @@
1
+ # 2.4.1
2
+
3
+ * Fix logging on STDOUT only platforms (Heroku)
4
+
1
5
  # 2.4.0
2
6
 
3
7
  * Rework agent startup sequence
@@ -220,7 +220,7 @@ module ScoutApm
220
220
  {
221
221
  :log_level => config.value('log_level'),
222
222
  :log_file_path => config.value('log_file_path'),
223
- :stdout => config.value('log_stdout'),
223
+ :stdout => config.value('log_stdout') || environment.platform_integration.log_to_stdout?,
224
224
  :stderr => config.value('log_stderr'),
225
225
  :logger_class => config.value('log_class'),
226
226
  }
@@ -40,7 +40,11 @@ module ScoutApm
40
40
  def fatal(*args, &block); @logger.fatal(*args, &block); end
41
41
 
42
42
  def log_level=(level)
43
- @logger.level = level
43
+ @logger.level = log_level_from_opts(level)
44
+ end
45
+
46
+ def log_level
47
+ @logger.level
44
48
  end
45
49
 
46
50
  def log_file_path
@@ -48,11 +52,11 @@ module ScoutApm
48
52
  end
49
53
 
50
54
  def stdout?
51
- @opts[:stdout] || @opts[:log_file_path] == "STDOUT"
55
+ @opts[:stdout] || (@opts[:log_file_path] || "").upcase == "STDOUT"
52
56
  end
53
57
 
54
58
  def stderr?
55
- @opts[:stderr] || @opts[:log_file_path] == "STDERR"
59
+ @opts[:stderr] || (@opts[:log_file_path] || "").upcase == "STDERR"
56
60
  end
57
61
 
58
62
  private
@@ -86,13 +90,16 @@ module ScoutApm
86
90
  end
87
91
  end
88
92
 
89
- def log_level_from_opts
90
- case @opts[:log_level]
93
+ def log_level_from_opts(explicit=nil)
94
+ candidate = explicit || (@opts[:log_level] || "").downcase
95
+
96
+ case candidate
91
97
  when "debug" then ::Logger::DEBUG
92
98
  when "info" then ::Logger::INFO
93
99
  when "warn" then ::Logger::WARN
94
100
  when "error" then ::Logger::ERROR
95
101
  when "fatal" then ::Logger::FATAL
102
+ when ::Logger::DEBUG, ::Logger::INFO, ::Logger::WARN, ::Logger::ERROR, ::Logger::FATAL then candidate
96
103
  else ::Logger::INFO
97
104
  end
98
105
  end
@@ -116,11 +123,12 @@ module ScoutApm
116
123
  # Check if this path is ok for a log file.
117
124
  # Does it exist?
118
125
  # Is it writable?
119
- # XXX: Implement
120
126
  def validate_path(candidate)
121
- !candidate.nil?
122
- end
127
+ return false if candidate.nil?
123
128
 
129
+ directory = File.dirname(candidate)
130
+ File.writable?(directory)
131
+ end
124
132
 
125
133
  class DefaultFormatter < ::Logger::Formatter
126
134
  def call(severity, time, progname, msg)
@@ -1,4 +1,4 @@
1
1
  module ScoutApm
2
- VERSION = "2.4.0"
2
+ VERSION = "2.4.1"
3
3
  end
4
4
 
@@ -0,0 +1,67 @@
1
+ require 'test_helper'
2
+
3
+ require 'scout_apm/logger'
4
+
5
+ class LoggerTest < Minitest::Test
6
+ def setup
7
+ @env_root = Pathname.new(File.dirname(__FILE__)) + "../../"
8
+ end
9
+
10
+ def test_detect_stdout
11
+ logger = ScoutApm::Logger.new("", { :log_file_path => "STDOUT"})
12
+ assert logger.stdout?
13
+ assert_equal STDOUT, logger.log_destination
14
+
15
+ # and lowercase
16
+ logger = ScoutApm::Logger.new("", { :log_file_path => "stdout"})
17
+ assert logger.stdout?
18
+ assert_equal STDOUT, logger.log_destination
19
+ end
20
+
21
+ def test_force_stdout
22
+ logger = ScoutApm::Logger.new("", { :stdout => true })
23
+ assert logger.stdout?
24
+ assert_equal STDOUT, logger.log_destination
25
+ end
26
+
27
+ def test_pick_log_file_with_no_options
28
+ logger = ScoutApm::Logger.new(@env_root, { })
29
+ assert_equal (@env_root + "log" + "scout_apm.log").to_s, logger.log_destination
30
+ end
31
+
32
+ def test_pick_log_file_with_different_dir
33
+ logger = ScoutApm::Logger.new(@env_root, { :log_file_path => "/tmp" })
34
+ assert_equal "/tmp/scout_apm.log", logger.log_destination
35
+ end
36
+
37
+ def test_pick_log_file_invalid_dir
38
+ logger = ScoutApm::Logger.new(@env_root, { :log_file_path => "/not_a_real_dir" })
39
+ assert_equal STDOUT, logger.log_destination
40
+ end
41
+
42
+ def test_pick_log_dir_not_writable
43
+ Dir.mktmpdir { |dir|
44
+ # An unwritable dir
45
+ FileUtils.chmod(0000, dir)
46
+ logger = ScoutApm::Logger.new(@env_root, { :log_file_path => dir })
47
+ assert_equal STDOUT, logger.log_destination
48
+
49
+ # so it can be deleted
50
+ FileUtils.chmod(0700, dir)
51
+ }
52
+ end
53
+
54
+ def test_set_log_level
55
+ logger = ScoutApm::Logger.new(@env_root, { :log_level => "debug" })
56
+ assert_equal ::Logger::DEBUG, logger.log_level
57
+ end
58
+
59
+ def test_set_log_level_after
60
+ logger = ScoutApm::Logger.new(@env_root, { :log_level => "debug" })
61
+ logger.log_level = "info"
62
+ assert_equal ::Logger::INFO, logger.log_level
63
+
64
+ logger.log_level = ::Logger::ERROR
65
+ assert_equal ::Logger::ERROR, logger.log_level
66
+ end
67
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scout_apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derek Haynes
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-01-13 00:00:00.000000000 Z
12
+ date: 2018-01-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -329,6 +329,7 @@ files:
329
329
  - test/unit/layer_converters/metric_converter_test.rb
330
330
  - test/unit/layer_converters/stubs.rb
331
331
  - test/unit/limited_layer_test.rb
332
+ - test/unit/logger_test.rb
332
333
  - test/unit/metric_set_test.rb
333
334
  - test/unit/remote/test_message.rb
334
335
  - test/unit/remote/test_router.rb
@@ -392,6 +393,7 @@ test_files:
392
393
  - test/unit/layer_converters/metric_converter_test.rb
393
394
  - test/unit/layer_converters/stubs.rb
394
395
  - test/unit/limited_layer_test.rb
396
+ - test/unit/logger_test.rb
395
397
  - test/unit/metric_set_test.rb
396
398
  - test/unit/remote/test_message.rb
397
399
  - test/unit/remote/test_router.rb