fluent-plugin-detect-exceptions-with-error 0.0.1 → 0.0.2a

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: bdad2bb8cb784d7f9b0505ad0b21e481cc75cdcf
4
- data.tar.gz: 4489bd8269ad9cbe898894a94bfd15113a4255a9
3
+ metadata.gz: 709478f4d3cf9404cd6f99da3b8cf8e1f9b8cd35
4
+ data.tar.gz: fdf9499a67bb8fa7f7922a957800fe7fa58e410d
5
5
  SHA512:
6
- metadata.gz: 994f976bf4295c7859aae7ece3948bf615c5a03563a2a5c5f399d09a05bd60155005ebe39050e5479a1ea27ae6f01ea24afda9449faf276d50e77adf23471c2d
7
- data.tar.gz: 8f53ddf7186c68e8b45a23996cd60069533b1676f654af891b311225fba64594b69e23a18953155958383127786263eaa8b319108869ab11253d35632b8e6d36
6
+ metadata.gz: ce8c8665fb2e0803feb588f63df1c8ff045589a9f6fff75edb82d70b21058cdccbfd69201e6ef2c51d4649879c3e674bd26a018abf052be0f911ac6dc44887b6
7
+ data.tar.gz: 90894b33d49e72df19f9b4e93c5f1c68da857f76087e92e9bac1697cd6a0d1fd6bf350dd145febd67276ff3cc60d62784ebd08435a6e01d1f599995a49b9816e
data/Gemfile.lock ADDED
@@ -0,0 +1,60 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fluent-plugin-detect-exceptions-with-error (0.0.2)
5
+ fluentd (~> 0.10)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ ast (2.3.0)
11
+ cool.io (1.4.6)
12
+ fluentd (0.12.33)
13
+ cool.io (>= 1.2.2, < 2.0.0)
14
+ http_parser.rb (>= 0.5.1, < 0.7.0)
15
+ json (>= 1.4.3)
16
+ msgpack (>= 0.5.11, < 2)
17
+ sigdump (~> 0.2.2)
18
+ string-scrub (>= 0.0.3, <= 0.0.5)
19
+ tzinfo (>= 1.0.0)
20
+ tzinfo-data (>= 1.0.0)
21
+ yajl-ruby (~> 1.0)
22
+ http_parser.rb (0.6.0)
23
+ json (2.0.3)
24
+ msgpack (1.1.0)
25
+ parser (2.4.0.0)
26
+ ast (~> 2.2)
27
+ power_assert (1.0.1)
28
+ powerpack (0.1.1)
29
+ rainbow (2.2.1)
30
+ rake (10.5.0)
31
+ rubocop (0.42.0)
32
+ parser (>= 2.3.1.1, < 3.0)
33
+ powerpack (~> 0.1)
34
+ rainbow (>= 1.99.1, < 3.0)
35
+ ruby-progressbar (~> 1.7)
36
+ unicode-display_width (~> 1.0, >= 1.0.1)
37
+ ruby-progressbar (1.8.1)
38
+ sigdump (0.2.4)
39
+ string-scrub (0.0.5)
40
+ test-unit (3.2.3)
41
+ power_assert
42
+ thread_safe (0.3.6)
43
+ tzinfo (1.2.2)
44
+ thread_safe (~> 0.1)
45
+ tzinfo-data (1.2017.1)
46
+ tzinfo (>= 1.0.0)
47
+ unicode-display_width (1.1.3)
48
+ yajl-ruby (1.3.0)
49
+
50
+ PLATFORMS
51
+ ruby
52
+
53
+ DEPENDENCIES
54
+ fluent-plugin-detect-exceptions-with-error!
55
+ rake (~> 10.3)
56
+ rubocop (= 0.42.0)
57
+ test-unit (~> 3.0)
58
+
59
+ BUNDLED WITH
60
+ 1.14.6
data/README.rdoc CHANGED
@@ -1,110 +1,21 @@
1
1
  = Exception detector plugin for {fluentd}[http://github.com/fluent/fluentd]
2
2
 
3
- fluent-plugin-detect-exceptions is an
4
- {output plugin for fluentd}[http://docs.fluentd.org/articles/output-plugin-overview]
5
- which scans a log stream text messages or JSON records for multi-line exception
6
- stack traces: If a consecutive sequence of log messages forms an exception stack
7
- trace, the log messages are forwarded as a single, combined log message.
8
- Otherwise, the input log data is forwarded as is.
3
+ fluent-plugin-detect-exceptions-with-error is a fork of {fluent-plugin-detect-exceptions}[https://github.com/GoogleCloudPlatform/fluent-plugin-detect-exceptions] which
4
+ - includes an ERROR message line preceding the stack trace in the combined exception message
5
+ - handles additional types of line found in Java stack traces, such as 'common frames omitted'
9
6
 
10
- Text log messages are assumed to contain single lines and are combined by
11
- concatenating them.
12
-
13
- For JSON records, the log message is taken from a configurable message field
14
- of the log record. The message field is assumed to contain a single line of
15
- text. If the message fields of a consecutive sequence of logs records
16
- form an exception stack, they are combined to a single log record by taking
17
- the first log record of the sequence and replacing the content of the message
18
- field with the concatenated content of all message fields in the sequence.
19
- Note that the content of other fields in the records of the sequence are thus
20
- not reflected in the combined output. This plugin is intended to be used in
21
- cases where the content of log records that belong to a single exception stack
22
- are so similar (e.g. because they contain the timestamp of the log entry) that
23
- this loss of information is irrelevant.
24
-
25
- This is NOT an official Google product.
26
-
27
- {<img src="https://badge.fury.io/rb/fluent-plugin-detect-exceptions.svg" alt="Gem Version" />}[http://badge.fury.io/rb/fluent-plugin-detect-exceptions]
28
- {<img src="https://secure.travis-ci.org/GoogleCloudPlatform/fluent-plugin-detect-exceptions.png" alt="Build Status" />}[https://travis-ci.org/GoogleCloudPlatform/fluent-plugin-detect-exceptions]
29
7
 
30
8
  == Installation
31
9
 
32
10
  This gem is hosted at
33
- {RubyGems.org}[https://rubygems.org/gems/fluent-plugin-detect-exceptions]
11
+ {RubyGems.org}[https://rubygems.org/gems/fluent-plugin-detect-exceptions-with-error]
34
12
  and can be installed using:
35
13
 
36
14
  $ gem install fluent-plugin-detect-exceptions-with-error
37
15
 
38
- Installing {google-fluentd}[https://cloud.google.com/logging/docs/agent/]
39
- will also install and configure the gem.
40
-
41
16
  == Configuration
42
17
 
43
- The plugin supports the following parameters:
44
-
45
- [message] Name of the field in the JSON record that contains the
46
- single-line log messages that shall be scanned for exceptions.
47
- If this is set to '', the plugin will try 'message' and 'log',
48
- in that order.
49
- This parameter is only applicable to structured (JSON) log streams.
50
- Default: ''.
51
-
52
- [remove_tag_prefix] The prefix to remove from the input tag when outputting
53
- a record. A prefix has to be a complete tag part.
54
- Example: If remove_tag_prefix is set to 'foo', the input
55
- tag foo.bar.baz is transformed to bar.baz and the input tag
56
- 'foofoo.bar' is not modified. Default: empty string.
57
-
58
- [languages] A list of language for which exception stack traces shall be
59
- detected. The values in the list can be separated by commas or
60
- written as JSON list.
61
- Supported values: java, js, csharp, python, go, ruby, php, all.
62
- Default: all.
63
-
64
- [multiline_flush_interval] Interval in seconds after which a (possibly not
65
- yet complete) buffered exception stack shall be
66
- forwarded. If not set, incomplete exceptions stacks
67
- are not flushed.
68
-
69
- [max_lines] Maximum number of lines in a detected exception stack trace.
70
- If this maximum number is exceeded, the exception stack trace
71
- that has been detected so far will be output as a single
72
- log message and the detection will start from scratch.
73
- This is intended as a safeguard against buffering very large
74
- amounts of data before outputting them to the log stream.
75
- Zero means no limit.
76
- Default: 1000.
77
-
78
- [max_bytes] Maximum number of bytes in a detected exception stack trace.
79
- If this maximum number is exceeded, the exception stack trace
80
- that has been detected so far will be output as a single
81
- log message and the detection will start from scratch.
82
- This is intended as a safeguard against buffering very large
83
- amounts of data before outputting them to the log stream.
84
- Zero means no limit.
85
- Default: 0.
86
-
87
- [stream] Name of the field in the JSON record that contains the name of a
88
- logical log stream within the "real" log stream.
89
- The exception detection is handled separately for each logical
90
- log stream, i.e., exceptions will be detected even if the messages
91
- for the logical log streams are interleaved in the "real" log stream.
92
- Consequently, only records in the same logical stream will be
93
- combined.
94
- This parameter is ignored if set to ''.
95
- This parameter is only applicable to structured (JSON) log streams.
96
- Default: ''.
97
-
98
- Example configuration:
18
+ The plugin supports the same parameters as {fluent-plugin-detect-exceptions}[https://github.com/GoogleCloudPlatform/fluent-plugin-detect-exceptions]
99
19
 
100
- <match **>
101
- remove_tag_prefix foo
102
- message log
103
- languages java, python
104
- multiline_flush_interval 0.1
105
- </match>
106
20
 
107
- == Copyright
108
21
 
109
- Copyright:: Copyright 2016 Google Inc. All rights reserved.
110
- License:: Apache License, Version 2.0
@@ -6,8 +6,8 @@ eos
6
6
  gem.summary = \
7
7
  'fluentd output plugin for combining error messages and stack traces as multi-line JSON logs'
8
8
  gem.license = 'Apache-2.0'
9
- gem.version = '0.0.1'
10
- gem.authors = ['Vincent Vega']
9
+ gem.version = '0.0.2a'
10
+ gem.authors = ['Paul Boocock']
11
11
  gem.required_ruby_version = Gem::Requirement.new('>= 2.0')
12
12
 
13
13
  gem.files = Dir['**/*'].keep_if { |file| File.file?(file) }
@@ -50,12 +50,12 @@ module Fluent
50
50
  end
51
51
 
52
52
  JAVA_RULES = [
53
- rule(:start_state,
54
- /(?:Exception|Error|Throwable|V8 errors stack trace)[:\r\n]/,
55
- :java),
53
+ rule(:start_state, /(?:Exception|Error|Throwable|V8 errors stack trace)[:\r\n]/, :java),
54
+ rule(:start_state, /^ERROR /, :java_stack_begin),
55
+ rule(:java_stack_begin, /(?:Exception|Error|Throwable|V8 errors stack trace)[:\r\n]/, :java),
56
56
  rule(:java, /^[\t ]+(?:eval )?at /, :java),
57
57
  rule(:java, /^[\t ]*(?:Caused by|Suppressed):/, :java),
58
- rule(:java, /^[\t ]*... \d+\ more/, :java)
58
+ rule(:java, /^[\t ]*... \d+\ (more|common frames omitted)/, :java)
59
59
  ].freeze
60
60
 
61
61
  PYTHON_RULES = [
@@ -33,6 +33,22 @@ Exception: foo
33
33
  at bar
34
34
  END
35
35
 
36
+ JAVA_EXC_WITH_ERROR = <<END.freeze
37
+ ERROR Something nasty
38
+ Exception: foo
39
+ at bar
40
+ END
41
+
42
+ JAVA_EXC_WITH_ERROR_CAUSE_MORE = <<END.freeze
43
+ ERROR Something nasty
44
+ SomeException: foo
45
+ at bar
46
+ ... 26 common frames omitted
47
+ Caused by: org.AnotherException
48
+ at bar2
49
+ at bar3
50
+ END
51
+
36
52
  PYTHON_EXC = <<END.freeze
37
53
  Traceback (most recent call last):
38
54
  File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1535, in __call__
@@ -95,6 +111,26 @@ END
95
111
  assert_equal(make_logs(t, *messages), d.events)
96
112
  end
97
113
 
114
+ def test_exception_detection_with_error
115
+ d = create_driver
116
+ t = Time.now.to_i
117
+ messages = [ARBITRARY_TEXT, JAVA_EXC_WITH_ERROR, ARBITRARY_TEXT]
118
+ d.run do
119
+ feed_lines(d, t, *messages)
120
+ end
121
+ assert_equal(make_logs(t, *messages), d.events)
122
+ end
123
+
124
+ def test_exception_detection_with_error_and_cause
125
+ d = create_driver
126
+ t = Time.now.to_i
127
+ messages = [ARBITRARY_TEXT, JAVA_EXC_WITH_ERROR_CAUSE_MORE, ARBITRARY_TEXT]
128
+ d.run do
129
+ feed_lines(d, t, *messages)
130
+ end
131
+ assert_equal(make_logs(t, *messages), d.events)
132
+ end
133
+
98
134
  def test_single_language_config
99
135
  cfg = 'languages java'
100
136
  d = create_driver(cfg)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-detect-exceptions-with-error
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2a
5
5
  platform: ruby
6
6
  authors:
7
- - Vincent Vega
7
+ - Paul Boocock
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-21 00:00:00.000000000 Z
11
+ date: 2017-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -74,8 +74,10 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - CONTRIBUTING
77
+ - fluent-plugin-detect-exceptions-with-error-0.0.2.gem
77
78
  - fluent-plugin-detect-exceptions-with-error.gemspec
78
79
  - Gemfile
80
+ - Gemfile.lock
79
81
  - lib/fluent/plugin/exception_detector.rb
80
82
  - lib/fluent/plugin/out_detect_exceptions.rb
81
83
  - LICENSE
@@ -100,9 +102,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
102
  version: '2.0'
101
103
  required_rubygems_version: !ruby/object:Gem::Requirement
102
104
  requirements:
103
- - - '>='
105
+ - - '>'
104
106
  - !ruby/object:Gem::Version
105
- version: '0'
107
+ version: 1.3.1
106
108
  requirements: []
107
109
  rubyforge_project:
108
110
  rubygems_version: 2.0.14.1