semantic_logger 2.21.0 → 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.
@@ -10,7 +10,7 @@ module Appender
10
10
  @appender = SemanticLogger::Appender::MongoDB.new(
11
11
  db: @db,
12
12
  collection_size: 10*1024**2, # 10MB
13
- host_name: 'test',
13
+ host: 'test',
14
14
  application: 'test_application',
15
15
  level: :trace
16
16
  )
@@ -22,18 +22,17 @@ module Appender
22
22
  @appender.purge_all if @appender
23
23
  end
24
24
 
25
- describe "format logs into documents" do
26
-
27
- it "handle nil name, message and hash" do
25
+ describe 'format logs into documents' do
26
+ it 'handle nil name, message and hash' do
28
27
  @appender.debug
29
28
  document = @appender.collection.find_one
30
29
  assert_equal :debug, document['level']
31
30
  assert_equal nil, document['message']
32
- assert_equal 'thread', document['thread_name']
31
+ assert_equal 'thread', document['thread']
33
32
  assert document['time'].is_a?(Time)
34
33
  assert_equal nil, document['payload']
35
34
  assert_equal $$, document['pid']
36
- assert_equal 'test', document['host_name']
35
+ assert_equal 'test', document['host']
37
36
  assert_equal 'test_application', document['application']
38
37
  end
39
38
 
@@ -43,40 +42,40 @@ module Appender
43
42
  document = @appender.collection.find_one
44
43
  assert_equal :debug, document['level']
45
44
  assert_equal @hash.inspect, document['message']
46
- assert_equal 'thread', document['thread_name']
45
+ assert_equal 'thread', document['thread']
47
46
  assert document['time'].is_a?(Time)
48
47
  assert_nil document['payload']
49
48
  assert_equal $$, document['pid']
50
- assert_equal 'test', document['host_name']
49
+ assert_equal 'test', document['host']
51
50
  assert_equal 'test_application', document['application']
52
51
  end
53
52
 
54
- it "handle message and payload" do
53
+ it 'handle message and payload' do
55
54
  @appender.debug('hello world', @hash)
56
55
 
57
56
  document = @appender.collection.find_one
58
57
  assert_equal :debug, document['level']
59
58
  assert_equal 'hello world', document['message']
60
- assert_equal 'thread', document['thread_name']
59
+ assert_equal 'thread', document['thread']
61
60
  assert document['time'].is_a?(Time)
62
- assert_equal({"tracking_number" => 12345, "session_id" => 'HSSKLEU@JDK767'}, document['payload'])
61
+ assert_equal 12345, document['tracking_number']
62
+ assert_equal 'HSSKLEU@JDK767', document['session_id']
63
63
  assert_equal $$, document['pid']
64
- assert_equal 'test', document['host_name']
64
+ assert_equal 'test', document['host']
65
65
  assert_equal 'test_application', document['application']
66
66
  end
67
67
 
68
- it "handle message without payload" do
68
+ it 'handle message without payload' do
69
69
  log = SemanticLogger::Log.new(:debug)
70
70
  @appender.debug('hello world')
71
71
 
72
72
  document = @appender.collection.find_one
73
73
  assert_equal :debug, document['level']
74
74
  assert_equal 'hello world', document['message']
75
- assert_equal 'thread', document['thread_name']
75
+ assert_equal 'thread', document['thread']
76
76
  assert document['time'].is_a?(Time)
77
- assert_equal nil, document['payload']
78
77
  assert_equal $$, document['pid']
79
- assert_equal 'test', document['host_name']
78
+ assert_equal 'test', document['host']
80
79
  assert_equal 'test_application', document['application']
81
80
  end
82
81
  end
@@ -84,16 +83,17 @@ module Appender
84
83
  describe "for each log level" do
85
84
  # Ensure that any log level can be logged
86
85
  SemanticLogger::LEVELS.each do |level|
87
- it "log #{level} information" do
86
+ it 'log #{level} information' do
88
87
  @appender.send(level, 'hello world -- Calculations', @hash)
89
88
  document = @appender.collection.find_one
90
89
  assert_equal level, document['level']
91
90
  assert_equal 'hello world -- Calculations', document['message']
92
- assert_equal 'thread', document['thread_name']
91
+ assert_equal 'thread', document['thread']
93
92
  assert document['time'].is_a?(Time)
94
- assert_equal({"tracking_number" => 12345, "session_id" => 'HSSKLEU@JDK767'}, document['payload'])
93
+ assert_equal 12345, document['tracking_number']
94
+ assert_equal 'HSSKLEU@JDK767', document['session_id']
95
95
  assert_equal $$, document['pid']
96
- assert_equal 'test', document['host_name']
96
+ assert_equal 'test', document['host']
97
97
  assert_equal 'test_application', document['application']
98
98
  end
99
99
  end
@@ -37,7 +37,7 @@ module Appender
37
37
  assert_equal @message, exception.message
38
38
  assert_equal ['test'], hash[:custom_params][:tags]
39
39
  assert_nil hash[:custom_params][:duration]
40
- assert hash[:custom_params][:thread_name], hash.inspect
40
+ assert hash[:custom_params][:thread], hash.inspect
41
41
  end
42
42
  end
43
43
 
@@ -55,9 +55,10 @@ module Appender
55
55
  assert_equal 'RuntimeError', exception.class.to_s
56
56
  assert_equal @message, exception.message
57
57
  assert_equal ['test'], hash[:custom_params][:tags], hash
58
- assert_equal({key1: 1, key2: 'a'}, hash[:custom_params][:payload], hash)
58
+ assert_equal 1, hash[:custom_params][:key1], hash
59
+ assert_equal 'a', hash[:custom_params][:key2], hash
59
60
  assert hash[:custom_params][:duration], hash
60
- assert hash[:custom_params][:thread_name], hash
61
+ assert hash[:custom_params][:thread], hash
61
62
  end
62
63
  end
63
64
  end
@@ -0,0 +1,78 @@
1
+ require_relative '../test_helper'
2
+
3
+ # Unit Test for SemanticLogger::Appender::SplunkHttp
4
+ module Appender
5
+ class SplunkHttpTest < Minitest::Test
6
+ response_mock = Struct.new(:code, :body)
7
+
8
+ describe SemanticLogger::Appender::SplunkHttp do
9
+ before do
10
+ @appender = SemanticLogger::Appender::SplunkHttp.new(
11
+ url: 'http://localhost:8088/path',
12
+ token: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
13
+ )
14
+ @message = 'AppenderSplunkHttpTest log message'
15
+ end
16
+
17
+ SemanticLogger::LEVELS.each do |level|
18
+ it "send #{level}" do
19
+ request = nil
20
+ @appender.http.stub(:request, -> r { request = r; response_mock.new('200', 'ok') }) do
21
+ @appender.send(level, @message)
22
+ end
23
+ body = decompress_data(request.body)
24
+ message = JSON.parse(body)
25
+ assert_equal @message, message['event']['message']
26
+ assert_equal level.to_s, message['event']['level']
27
+ refute message['event']['exception']
28
+ end
29
+
30
+ it "sends #{level} exceptions" do
31
+ exc = nil
32
+ begin
33
+ Uh oh
34
+ rescue Exception => e
35
+ exc = e
36
+ end
37
+ request = nil
38
+ @appender.http.stub(:request, -> r { request = r; response_mock.new('200', 'ok') }) do
39
+ @appender.send(level, 'Reading File', exc)
40
+ end
41
+ body = decompress_data(request.body)
42
+ hash = JSON.parse(body)
43
+ # assert message['event']['message'].include?('Reading File -- NameError: undefined local variable or method'), message['message']
44
+ # assert_equal level.to_s, message['event']['level']
45
+ # assert message['event']['backtrace'].include?(__FILE__), message['event']['backtrace']
46
+ assert 'Reading File', hash['message']
47
+ assert exception = hash['event']['exception']
48
+ assert 'NameError', exception['name']
49
+ assert 'undefined local variable or method', exception['message']
50
+ assert_equal level.to_s, hash['event']['level']
51
+ assert exception['stack_trace'].first.include?(__FILE__), exception
52
+ end
53
+
54
+ it "sends #{level} custom attributes" do
55
+ request = nil
56
+ @appender.http.stub(:request, -> r { request = r; response_mock.new('200', 'ok') }) do
57
+ @appender.send(level, @message, {key1: 1, key2: 'a'})
58
+ end
59
+ body = decompress_data(request.body)
60
+ message = JSON.parse(body)
61
+ assert_equal @message, message['event']['message']
62
+ assert_equal level.to_s, message['event']['level']
63
+ refute message['event']['backtrace']
64
+ assert_equal(1, message['event']['key1'], message)
65
+ assert_equal('a', message['event']['key2'], message)
66
+ end
67
+ end
68
+
69
+ def decompress_data(data)
70
+ str = StringIO.new(data)
71
+ gz = Zlib::GzipReader.new(str)
72
+ raw = gz.read
73
+ gz.close
74
+ raw
75
+ end
76
+ end
77
+ end
78
+ end
data/test/logger_test.rb CHANGED
@@ -26,7 +26,7 @@ class LoggerTest < Minitest::Test
26
26
  @hash = {session_id: 'HSSKLEU@JDK767', tracking_number: 12345}
27
27
  @hash_str = @hash.inspect.sub("{", "\\{").sub("}", "\\}")
28
28
  @thread_name = Thread.current.name
29
- @file_name_reg_exp = RUBY_VERSION.to_f <= 2.0 ? ' (mock|logger_test).rb:\d+' : ' logger_test.rb:\d+'
29
+ @file_name_reg_exp = ' logger_test.rb:\d+'
30
30
 
31
31
  assert_equal [], @logger.tags
32
32
  assert_equal 65535, SemanticLogger.backtrace_level_index
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.21.0
4
+ version: 3.0.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-18 00:00:00.000000000 Z
11
+ date: 2016-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.7'
27
41
  description: Next generation logging system for Ruby to support highly concurrent,
28
42
  high throughput, low latency enterprise systems
29
43
  email:
@@ -38,10 +52,14 @@ files:
38
52
  - lib/semantic_logger.rb
39
53
  - lib/semantic_logger/appender/base.rb
40
54
  - lib/semantic_logger/appender/bugsnag.rb
55
+ - lib/semantic_logger/appender/elasticsearch.rb
41
56
  - lib/semantic_logger/appender/file.rb
57
+ - lib/semantic_logger/appender/graylog.rb
58
+ - lib/semantic_logger/appender/http.rb
42
59
  - lib/semantic_logger/appender/mongodb.rb
43
60
  - lib/semantic_logger/appender/new_relic.rb
44
61
  - lib/semantic_logger/appender/splunk.rb
62
+ - lib/semantic_logger/appender/splunk_http.rb
45
63
  - lib/semantic_logger/appender/syslog.rb
46
64
  - lib/semantic_logger/appender/wrapper.rb
47
65
  - lib/semantic_logger/base.rb
@@ -55,9 +73,12 @@ files:
55
73
  - lib/semantic_logger/version.rb
56
74
  - test/appender/bugsnag_test.rb
57
75
  - test/appender/file_test.rb
76
+ - test/appender/graylog_test.rb
77
+ - test/appender/http_test.rb
58
78
  - test/appender/mongodb_test.rb
59
79
  - test/appender/new_relic_test.rb
60
80
  - test/appender/newrelic_rpm.rb
81
+ - test/appender/splunk_http_test.rb
61
82
  - test/appender/splunk_test.rb
62
83
  - test/appender/syslog_test.rb
63
84
  - test/appender/wrapper_test.rb
@@ -86,16 +107,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
107
  version: '0'
87
108
  requirements: []
88
109
  rubyforge_project:
89
- rubygems_version: 2.4.8
110
+ rubygems_version: 2.5.1
90
111
  signing_key:
91
112
  specification_version: 4
92
113
  summary: Scalable, next generation enterprise logging for Ruby
93
114
  test_files:
94
115
  - test/appender/bugsnag_test.rb
95
116
  - test/appender/file_test.rb
117
+ - test/appender/graylog_test.rb
118
+ - test/appender/http_test.rb
96
119
  - test/appender/mongodb_test.rb
97
120
  - test/appender/new_relic_test.rb
98
121
  - test/appender/newrelic_rpm.rb
122
+ - test/appender/splunk_http_test.rb
99
123
  - test/appender/splunk_test.rb
100
124
  - test/appender/syslog_test.rb
101
125
  - test/appender/wrapper_test.rb