fluent-plugin-field-multiregex 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8b81740f35eb4f3777a9503bf60867c6bd5de174
4
+ data.tar.gz: 97c364e2b3bcf7240c2e1c22efedd9cdcd3aa197
5
+ SHA512:
6
+ metadata.gz: ea0d2a8bc8fb40d4c3ae8aefbe3e897573f1df03161476bbadfa5d8dd0b0df510c8f911d39c86ee1a3026d99628ca54a05e40df14a6ad52b38babd8e1307dd79
7
+ data.tar.gz: a45ca073fcf84157e9ad173374e1368bfe364450ffe09ed7ef0ffbbfcfa316a344786b8f6a402d51e419f1ab62b6e2e52b7e107d87488aa4b03615b7d18b0a3e
@@ -0,0 +1,34 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /test/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Specific to RubyMotion:
13
+ .dat*
14
+ .repl_history
15
+ build/
16
+
17
+ ## Documentation cache and generated files:
18
+ /.yardoc/
19
+ /_yardoc/
20
+ /doc/
21
+ /rdoc/
22
+
23
+ ## Environment normalisation:
24
+ /.bundle/
25
+ /lib/bundler/man/
26
+
27
+ # for a library or gem, you might want to ignore these files since the code is
28
+ # intended to run in multiple environments; otherwise, check them in:
29
+ # Gemfile.lock
30
+ # .ruby-version
31
+ # .ruby-gemset
32
+
33
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
34
+ .rvmrc
@@ -0,0 +1,22 @@
1
+ fluent-plugin-field-multiregex
2
+ ===========================
3
+
4
+ Fluent output plugin for reforming a record using multiple named capture regular expressions
5
+
6
+ ## Installation
7
+
8
+ Use RubyGems:
9
+
10
+ td-agent-gem install fluent-plugin-field-multiregex
11
+
12
+ ## Configuration
13
+
14
+ <match pattern>
15
+ type field_multiregex
16
+ parse_key message
17
+ remove_tag_prefix raw
18
+ add_tag_prefix parsed
19
+ multiline true
20
+ pattern1 ^Regular Expression with (?<capture>named captures)$
21
+ </match>
22
+
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require "bundler/gem_tasks"
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ task :default => [:build]
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.1
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.name = "fluent-plugin-field-multiregex"
6
+ gem.description = "Fluent output plugin for reforming a record using multiple named capture regular expressions"
7
+ gem.homepage = "https://github.com/CiscoZeus/fluent-plugin-field-multiregex"
8
+ gem.summary = gem.description
9
+ gem.version = File.read("VERSION").strip
10
+ gem.authors = ["Manoj Sharma"]
11
+ gem.email = ["vigyanik@gmail.com"]
12
+ gem.has_rdoc = false
13
+ gem.license = 'MIT'
14
+
15
+ gem.files = `git ls-files`.split("\n")
16
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ gem.require_paths = ['lib']
19
+
20
+ gem.add_dependency "fluentd"
21
+ gem.add_development_dependency "rake"
22
+ end
23
+
@@ -0,0 +1,105 @@
1
+ class String
2
+ def is_i?
3
+ /\A[-+]?\d+\z/ === self
4
+ end
5
+ def nan?
6
+ self !~ /^\s*[+-]?((\d+_?)*\d+(\.(\d+_?)*\d+)?|\.(\d+_?)*\d+)(\s*|([eE][+-]?(\d+_?)*\d+)\s*)$/
7
+ end
8
+ end
9
+
10
+ module Fluent
11
+ class OutputFieldMultiRegex < Fluent::Output
12
+ Fluent::Plugin.register_output('field_multiregex', self)
13
+
14
+ config_param :remove_tag_prefix, :string, :default => nil
15
+ config_param :add_tag_prefix, :string, :default => nil
16
+ config_param :parse_key, :string, :default => 'message'
17
+ config_param :multiline, :string, :default => false
18
+ config_param :pattern1, :string, :default => nil
19
+ config_param :pattern2, :string, :default => nil
20
+ config_param :pattern3, :string, :default => nil
21
+ config_param :pattern4, :string, :default => nil
22
+ config_param :pattern5, :string, :default => nil
23
+ config_param :pattern6, :string, :default => nil
24
+ config_param :pattern7, :string, :default => nil
25
+ config_param :pattern8, :string, :default => nil
26
+ config_param :pattern9, :string, :default => nil
27
+ config_param :pattern10, :string, :default => nil
28
+ config_param :pattern11, :string, :default => nil
29
+ config_param :pattern12, :string, :default => nil
30
+ config_param :pattern13, :string, :default => nil
31
+ config_param :pattern14, :string, :default => nil
32
+ config_param :pattern15, :string, :default => nil
33
+ config_param :pattern16, :string, :default => nil
34
+ config_param :pattern17, :string, :default => nil
35
+ config_param :pattern18, :string, :default => nil
36
+ config_param :pattern19, :string, :default => nil
37
+ config_param :pattern20, :string, :default => nil
38
+
39
+ def emit(tag, es, chain)
40
+ tag = update_tag(tag)
41
+ es.each { |time, record|
42
+ Engine.emit(tag, time, parse_field(record))
43
+ }
44
+ chain.next
45
+ end
46
+
47
+ def update_tag(tag)
48
+ if remove_tag_prefix
49
+ if remove_tag_prefix == tag
50
+ tag = ''
51
+ elsif tag.to_s.start_with?(remove_tag_prefix+'.')
52
+ tag = tag[remove_tag_prefix.length+1 .. -1]
53
+ end
54
+ end
55
+ if add_tag_prefix
56
+ tag = tag && tag.length > 0 ? "#{add_tag_prefix}.#{tag}" : add_tag_prefix
57
+ end
58
+ return tag
59
+ end
60
+
61
+ def parse_field(record)
62
+ source = record[parse_key].to_s
63
+
64
+ source_arr = []
65
+ if multiline
66
+ source_arr = source.split( /\r?\n/ )
67
+ else
68
+ source_arr << source
69
+ end
70
+
71
+ input_patterns = [pattern1,pattern2,pattern3,pattern4,
72
+ pattern5,pattern6,pattern7,pattern8,
73
+ pattern9,pattern10,pattern11,pattern12,
74
+ pattern13,pattern14,pattern15,pattern16,
75
+ pattern17,pattern18,pattern19,pattern20
76
+ ]
77
+ matched = false
78
+ input_patterns.each do |input_pattern|
79
+ if !(input_pattern.nil?)
80
+ source_arr.each do |source_elem|
81
+ matched = false
82
+ matched_hash = source_elem.match(input_pattern)
83
+ if !(matched_hash.nil?)
84
+ matched_hash.names.each do |key|
85
+ val = matched_hash[key]
86
+ if val.is_i?
87
+ record[key] = val.to_i
88
+ elsif val.nan?
89
+ record[key] = val
90
+ else
91
+ record[key] = val.to_f
92
+ end
93
+ end
94
+ matched = true
95
+ end
96
+ end
97
+ end
98
+ if matched
99
+ break
100
+ end
101
+ end
102
+ return record
103
+ end
104
+ end
105
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-field-multiregex
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Manoj Sharma
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fluentd
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Fluent output plugin for reforming a record using multiple named capture
42
+ regular expressions
43
+ email:
44
+ - vigyanik@gmail.com
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - ".gitignore"
50
+ - README.md
51
+ - Rakefile
52
+ - VERSION
53
+ - fluent-plugin-field-multiregex.gemspec
54
+ - lib/fluent/plugin/out_field_multiregex.rb
55
+ homepage: https://github.com/CiscoZeus/fluent-plugin-field-multiregex
56
+ licenses:
57
+ - MIT
58
+ metadata: {}
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 2.5.1
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: Fluent output plugin for reforming a record using multiple named capture
79
+ regular expressions
80
+ test_files: []