semantic_logger 2.20.0 → 2.21.0

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: 141016c8a502a158974b0dfe589a90b5cd650826
4
- data.tar.gz: 09cb7afdf37afe6280098b01f7257c8a21b5995e
3
+ metadata.gz: 7835135546f3ebf18ce484c594cd52fef0d4ecee
4
+ data.tar.gz: 12cd7ddcbf431f070a0b57792ad436f100aca649
5
5
  SHA512:
6
- metadata.gz: 3f734075af2a306b37560903beb0d0003f912706f6d68446914832cbb76a404c7017dd536c587eb155309a1128ebf328719f33c727b0ca129d03d2bea8f6fa21
7
- data.tar.gz: a96ffd5c36c47e4e7787dc53970dafe092203f6e717f6aba4289217b45e14b1e36317151dcbe2af60178e78d3266ed92f23bd3f7ba6c39d1592d5fbd37794458
6
+ metadata.gz: cfb139be7ea5cb63d9787638e4e2e2bc464c8bd0bf49f60a9447b4b2b28033e66de8766c8c5b648e544d8bd3068813765d13cee9275130f2823416881e20bfde
7
+ data.tar.gz: 92e4e1fc6e445696c04596f4f12839d6504d32a62df005baa83e82adb2b4ed4343b9a808193104bfd615ac159ceab7631e5cb36e70457c265efb6de1cb475e18
@@ -1,3 +1,9 @@
1
+ # Load AwesomePrint if available
2
+ begin
3
+ require 'awesome_print'
4
+ rescue LoadError
5
+ end
6
+
1
7
  # Base appender
2
8
  #
3
9
  # Abstract base class for appenders
@@ -108,6 +108,15 @@ module SemanticLogger
108
108
  end
109
109
  end
110
110
 
111
+ # If the tag being supplied is definitely a string then this fast
112
+ # tag api can be used for short lived tags
113
+ def fast_tag(tag)
114
+ (Thread.current[:semantic_logger_tags] ||= []) << tag
115
+ yield
116
+ ensure
117
+ Thread.current[:semantic_logger_tags].pop
118
+ end
119
+
111
120
  # Add the supplied tags to the list of tags to log for this thread whilst
112
121
  # the supplied block is active
113
122
  # Returns nil if no tags are currently set
@@ -290,7 +299,7 @@ module SemanticLogger
290
299
  end
291
300
 
292
301
  # Log message at the specified level
293
- def log_internal(level, index, message=nil, payload=nil, exception=nil, &block)
302
+ def log_internal(level, index, message=nil, payload=nil, exception=nil)
294
303
  # Detect exception being logged
295
304
  if exception.nil? && payload.nil? && message.kind_of?(Exception)
296
305
  exception = message
@@ -303,7 +312,7 @@ module SemanticLogger
303
312
  end
304
313
 
305
314
  # Add result of block as message or payload if not nil
306
- if block && (result = block.call)
315
+ if block_given? && (result = yield)
307
316
  if result.is_a?(String)
308
317
  message = message.nil? ? result : "#{message} -- #{result}"
309
318
  elsif payload && payload.respond_to?(:merge)
@@ -320,7 +329,7 @@ module SemanticLogger
320
329
 
321
330
  # Add caller stack trace
322
331
  backtrace =
323
- if !exception && (index >= SemanticLogger.backtrace_level_index)
332
+ if index >= SemanticLogger.backtrace_level_index
324
333
  trace = caller
325
334
  # Remove call to this internal method
326
335
  trace.shift(1)
@@ -332,18 +341,18 @@ module SemanticLogger
332
341
  end
333
342
 
334
343
  # Measure the supplied block and log the message
335
- def benchmark_internal(level, index, message, params, &block)
344
+ def benchmark_internal(level, index, message, params)
336
345
  start = Time.now
337
346
  exception = nil
338
347
  begin
339
- if block
348
+ if block_given?
340
349
  result =
341
350
  if silence_level = params[:silence]
342
351
  # In case someone accidentally sets `silence: true` instead of `silence: :error`
343
352
  silence_level = :error if silence_level == true
344
- silence(silence_level) { block.call(params) }
353
+ silence(silence_level) { yield(params) }
345
354
  else
346
- block.call(params)
355
+ yield(params)
347
356
  end
348
357
  exception = params[:exception]
349
358
  result
@@ -43,14 +43,14 @@ module SemanticLogger
43
43
 
44
44
  MAX_EXCEPTIONS_TO_UNWRAP = 5
45
45
  # Call the block for exception and any nested exception
46
- def each_exception(&block)
46
+ def each_exception
47
47
  # With thanks to https://github.com/bugsnag/bugsnag-ruby/blob/6348306e44323eee347896843d16c690cd7c4362/lib/bugsnag/notification.rb#L81
48
48
  depth = 0
49
49
  exceptions = []
50
50
  ex = exception
51
51
  while ex != nil && !exceptions.include?(ex) && exceptions.length < MAX_EXCEPTIONS_TO_UNWRAP
52
52
  exceptions << ex
53
- block.call(ex, depth)
53
+ yield(ex, depth)
54
54
 
55
55
  depth += 1
56
56
  ex =
@@ -1,3 +1,3 @@
1
1
  module SemanticLogger #:nodoc
2
- VERSION = '2.20.0'
2
+ VERSION = '2.21.0'
3
3
  end
data/test/logger_test.rb CHANGED
@@ -64,7 +64,7 @@ class LoggerTest < Minitest::Test
64
64
  end
65
65
  end
66
66
 
67
- it "logs #{level} info with backtrace" do
67
+ it 'logs with backtrace' do
68
68
  SemanticLogger.stub(:backtrace_level_index, 0) do
69
69
  @logger.send(level, 'hello world', @hash) { 'Calculations' }
70
70
  SemanticLogger.flush
@@ -72,10 +72,34 @@ class LoggerTest < Minitest::Test
72
72
  end
73
73
  end
74
74
 
75
+ it 'logs with backtrace and exception' do
76
+ SemanticLogger.stub(:backtrace_level_index, 0) do
77
+ exc = RuntimeError.new("Test")
78
+ @logger.send(level, 'hello world', exc)
79
+ SemanticLogger.flush
80
+ assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ #{level_char} \[\d+:#{@thread_name}#{@file_name_reg_exp}\] LoggerTest -- hello world -- Exception: RuntimeError: Test/, @mock_logger.message
81
+ end
82
+ end
83
+
84
+ it 'logs payload' do
85
+ hash = {tracking_number: '123456', even: 2, more: 'data'}
86
+ hash_str = hash.inspect.sub('{', '\{').sub('}', '\}')
87
+ @logger.send(level, 'Hello world', hash)
88
+ SemanticLogger.flush
89
+ assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ #{level_char} \[\d+:#{@thread_name}\] LoggerTest -- Hello world -- #{hash_str}/, @mock_logger.message
90
+ end
91
+
92
+ it 'does not log an empty payload' do
93
+ hash = {}
94
+ @logger.send(level, 'Hello world', hash)
95
+ SemanticLogger.flush
96
+ assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ #{level_char} \[\d+:#{@thread_name}\] LoggerTest -- Hello world/, @mock_logger.message
97
+ end
98
+
75
99
  end
76
100
  end
77
101
 
78
- describe 'tagged logging' do
102
+ describe '#tagged' do
79
103
  it 'add tags to log entries' do
80
104
  @logger.tagged('12345', 'DJHSFK') do
81
105
  @logger.info('Hello world')
@@ -96,7 +120,9 @@ class LoggerTest < Minitest::Test
96
120
  assert_equal 'tags', @logger.tags.last
97
121
  end
98
122
  end
123
+ end
99
124
 
125
+ describe '#with_payload' do
100
126
  it 'logs tagged payload' do
101
127
  hash = {tracking_number: "123456", even: 2, more: "data"}
102
128
  hash_str = hash.inspect.sub("{", "\\{").sub("}", "\\}")
@@ -108,24 +134,19 @@ class LoggerTest < Minitest::Test
108
134
  end
109
135
  end
110
136
  end
137
+ end
111
138
 
112
- it 'logs payload' do
113
- hash = {tracking_number: "123456", even: 2, more: "data"}
114
- hash_str = hash.inspect.sub("{", "\\{").sub("}", "\\}")
115
- @logger.info('Hello world', hash)
116
- SemanticLogger.flush
117
- assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ I \[\d+:#{@thread_name}\] LoggerTest -- Hello world -- #{hash_str}/, @mock_logger.message
118
- end
119
-
120
- it 'does not log an empty payload' do
121
- hash = {}
122
- @logger.info('Hello world', hash)
123
- SemanticLogger.flush
124
- assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ I \[\d+:#{@thread_name}\] LoggerTest -- Hello world/, @mock_logger.message
139
+ describe '#fast_tag' do
140
+ it 'add string tag to log entries' do
141
+ @logger.fast_tag('12345') do
142
+ @logger.info('Hello world')
143
+ SemanticLogger.flush
144
+ assert_match /\d+-\d+-\d+ \d+:\d+:\d+.\d+ I \[\d+:#{@thread_name}\] \[12345\] LoggerTest -- Hello world/, @mock_logger.message
145
+ end
125
146
  end
126
147
  end
127
148
 
128
- describe 'Ruby Logger' do
149
+ describe 'Ruby Logger level' do
129
150
  # Ensure that any log level can be logged
130
151
  Logger::Severity.constants.each do |level|
131
152
  it "log Ruby logger #{level} info" do
data/test/mock_logger.rb CHANGED
@@ -5,11 +5,11 @@ class MockLogger
5
5
 
6
6
  Logger::Severity.constants.each do |level|
7
7
  class_eval <<-EOT, __FILE__, __LINE__
8
- def #{level.downcase}(message = nil, progname = nil, &block)
8
+ def #{level.downcase}(message = nil, progname = nil)
9
9
  if message
10
10
  self.message = message
11
- elsif block
12
- self.message = block.call
11
+ elsif block_given?
12
+ self.message = yield
13
13
  else
14
14
  self.message = progname
15
15
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semantic_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.20.0
4
+ version: 2.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reid Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-09 00:00:00.000000000 Z
11
+ date: 2015-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  version: '0'
87
87
  requirements: []
88
88
  rubyforge_project:
89
- rubygems_version: 2.4.5.1
89
+ rubygems_version: 2.4.8
90
90
  signing_key:
91
91
  specification_version: 4
92
92
  summary: Scalable, next generation enterprise logging for Ruby