fluentd 0.14.4-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of fluentd might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/.github/ISSUE_TEMPLATE.md +6 -0
- data/.gitignore +26 -0
- data/.travis.yml +45 -0
- data/AUTHORS +2 -0
- data/CONTRIBUTING.md +35 -0
- data/COPYING +14 -0
- data/ChangeLog +276 -0
- data/Gemfile +9 -0
- data/README.md +51 -0
- data/Rakefile +53 -0
- data/Vagrantfile +17 -0
- data/appveyor.yml +41 -0
- data/bin/fluent-debug +5 -0
- data/example/copy_roundrobin.conf +39 -0
- data/example/filter_stdout.conf +22 -0
- data/example/in_forward.conf +11 -0
- data/example/in_http.conf +14 -0
- data/example/in_out_forward.conf +17 -0
- data/example/in_syslog.conf +15 -0
- data/example/in_tail.conf +14 -0
- data/example/in_tcp.conf +13 -0
- data/example/in_udp.conf +13 -0
- data/example/multi_filters.conf +61 -0
- data/example/out_buffered_null.conf +32 -0
- data/example/out_copy.conf +20 -0
- data/example/out_file.conf +13 -0
- data/example/out_forward.conf +35 -0
- data/example/out_forward_buf_file.conf +23 -0
- data/example/v0_12_filter.conf +78 -0
- data/example/v1_literal_example.conf +36 -0
- data/fluent.conf +139 -0
- data/fluentd.gemspec +51 -0
- data/lib/fluent/agent.rb +194 -0
- data/lib/fluent/command/bundler_injection.rb +45 -0
- data/lib/fluent/command/cat.rb +319 -0
- data/lib/fluent/command/debug.rb +102 -0
- data/lib/fluent/command/fluentd.rb +273 -0
- data/lib/fluent/compat/call_super_mixin.rb +67 -0
- data/lib/fluent/compat/exec_util.rb +129 -0
- data/lib/fluent/compat/file_util.rb +54 -0
- data/lib/fluent/compat/filter.rb +68 -0
- data/lib/fluent/compat/formatter.rb +111 -0
- data/lib/fluent/compat/formatter_utils.rb +85 -0
- data/lib/fluent/compat/handle_tag_and_time_mixin.rb +62 -0
- data/lib/fluent/compat/handle_tag_name_mixin.rb +53 -0
- data/lib/fluent/compat/input.rb +49 -0
- data/lib/fluent/compat/output.rb +677 -0
- data/lib/fluent/compat/output_chain.rb +60 -0
- data/lib/fluent/compat/parser.rb +180 -0
- data/lib/fluent/compat/parser_utils.rb +40 -0
- data/lib/fluent/compat/propagate_default.rb +62 -0
- data/lib/fluent/compat/record_filter_mixin.rb +34 -0
- data/lib/fluent/compat/set_tag_key_mixin.rb +50 -0
- data/lib/fluent/compat/set_time_key_mixin.rb +69 -0
- data/lib/fluent/compat/socket_util.rb +165 -0
- data/lib/fluent/compat/string_util.rb +34 -0
- data/lib/fluent/compat/structured_format_mixin.rb +26 -0
- data/lib/fluent/compat/type_converter.rb +90 -0
- data/lib/fluent/config.rb +56 -0
- data/lib/fluent/config/basic_parser.rb +123 -0
- data/lib/fluent/config/configure_proxy.rb +366 -0
- data/lib/fluent/config/dsl.rb +149 -0
- data/lib/fluent/config/element.rb +218 -0
- data/lib/fluent/config/error.rb +26 -0
- data/lib/fluent/config/literal_parser.rb +251 -0
- data/lib/fluent/config/parser.rb +107 -0
- data/lib/fluent/config/section.rb +212 -0
- data/lib/fluent/config/types.rb +136 -0
- data/lib/fluent/config/v1_parser.rb +190 -0
- data/lib/fluent/configurable.rb +176 -0
- data/lib/fluent/daemon.rb +15 -0
- data/lib/fluent/engine.rb +220 -0
- data/lib/fluent/env.rb +27 -0
- data/lib/fluent/event.rb +287 -0
- data/lib/fluent/event_router.rb +259 -0
- data/lib/fluent/filter.rb +21 -0
- data/lib/fluent/formatter.rb +23 -0
- data/lib/fluent/input.rb +21 -0
- data/lib/fluent/label.rb +38 -0
- data/lib/fluent/load.rb +36 -0
- data/lib/fluent/log.rb +445 -0
- data/lib/fluent/match.rb +141 -0
- data/lib/fluent/mixin.rb +31 -0
- data/lib/fluent/msgpack_factory.rb +62 -0
- data/lib/fluent/output.rb +26 -0
- data/lib/fluent/output_chain.rb +23 -0
- data/lib/fluent/parser.rb +23 -0
- data/lib/fluent/plugin.rb +161 -0
- data/lib/fluent/plugin/bare_output.rb +63 -0
- data/lib/fluent/plugin/base.rb +130 -0
- data/lib/fluent/plugin/buf_file.rb +154 -0
- data/lib/fluent/plugin/buf_memory.rb +34 -0
- data/lib/fluent/plugin/buffer.rb +603 -0
- data/lib/fluent/plugin/buffer/chunk.rb +160 -0
- data/lib/fluent/plugin/buffer/file_chunk.rb +323 -0
- data/lib/fluent/plugin/buffer/memory_chunk.rb +90 -0
- data/lib/fluent/plugin/exec_util.rb +22 -0
- data/lib/fluent/plugin/file_util.rb +22 -0
- data/lib/fluent/plugin/file_wrapper.rb +120 -0
- data/lib/fluent/plugin/filter.rb +93 -0
- data/lib/fluent/plugin/filter_grep.rb +75 -0
- data/lib/fluent/plugin/filter_record_transformer.rb +342 -0
- data/lib/fluent/plugin/filter_stdout.rb +53 -0
- data/lib/fluent/plugin/formatter.rb +45 -0
- data/lib/fluent/plugin/formatter_csv.rb +47 -0
- data/lib/fluent/plugin/formatter_hash.rb +29 -0
- data/lib/fluent/plugin/formatter_json.rb +44 -0
- data/lib/fluent/plugin/formatter_ltsv.rb +41 -0
- data/lib/fluent/plugin/formatter_msgpack.rb +29 -0
- data/lib/fluent/plugin/formatter_out_file.rb +78 -0
- data/lib/fluent/plugin/formatter_single_value.rb +34 -0
- data/lib/fluent/plugin/formatter_stdout.rb +74 -0
- data/lib/fluent/plugin/in_debug_agent.rb +64 -0
- data/lib/fluent/plugin/in_dummy.rb +135 -0
- data/lib/fluent/plugin/in_exec.rb +149 -0
- data/lib/fluent/plugin/in_forward.rb +366 -0
- data/lib/fluent/plugin/in_gc_stat.rb +52 -0
- data/lib/fluent/plugin/in_http.rb +422 -0
- data/lib/fluent/plugin/in_monitor_agent.rb +401 -0
- data/lib/fluent/plugin/in_object_space.rb +90 -0
- data/lib/fluent/plugin/in_syslog.rb +204 -0
- data/lib/fluent/plugin/in_tail.rb +838 -0
- data/lib/fluent/plugin/in_tcp.rb +41 -0
- data/lib/fluent/plugin/in_udp.rb +37 -0
- data/lib/fluent/plugin/in_unix.rb +201 -0
- data/lib/fluent/plugin/input.rb +33 -0
- data/lib/fluent/plugin/multi_output.rb +95 -0
- data/lib/fluent/plugin/out_buffered_null.rb +59 -0
- data/lib/fluent/plugin/out_buffered_stdout.rb +70 -0
- data/lib/fluent/plugin/out_copy.rb +42 -0
- data/lib/fluent/plugin/out_exec.rb +114 -0
- data/lib/fluent/plugin/out_exec_filter.rb +393 -0
- data/lib/fluent/plugin/out_file.rb +167 -0
- data/lib/fluent/plugin/out_forward.rb +646 -0
- data/lib/fluent/plugin/out_null.rb +27 -0
- data/lib/fluent/plugin/out_relabel.rb +28 -0
- data/lib/fluent/plugin/out_roundrobin.rb +80 -0
- data/lib/fluent/plugin/out_stdout.rb +48 -0
- data/lib/fluent/plugin/out_stream.rb +130 -0
- data/lib/fluent/plugin/output.rb +1020 -0
- data/lib/fluent/plugin/owned_by_mixin.rb +42 -0
- data/lib/fluent/plugin/parser.rb +175 -0
- data/lib/fluent/plugin/parser_apache.rb +28 -0
- data/lib/fluent/plugin/parser_apache2.rb +84 -0
- data/lib/fluent/plugin/parser_apache_error.rb +26 -0
- data/lib/fluent/plugin/parser_csv.rb +33 -0
- data/lib/fluent/plugin/parser_json.rb +79 -0
- data/lib/fluent/plugin/parser_ltsv.rb +50 -0
- data/lib/fluent/plugin/parser_multiline.rb +104 -0
- data/lib/fluent/plugin/parser_nginx.rb +28 -0
- data/lib/fluent/plugin/parser_none.rb +36 -0
- data/lib/fluent/plugin/parser_regexp.rb +73 -0
- data/lib/fluent/plugin/parser_syslog.rb +82 -0
- data/lib/fluent/plugin/parser_tsv.rb +37 -0
- data/lib/fluent/plugin/socket_util.rb +22 -0
- data/lib/fluent/plugin/storage.rb +84 -0
- data/lib/fluent/plugin/storage_local.rb +132 -0
- data/lib/fluent/plugin/string_util.rb +22 -0
- data/lib/fluent/plugin_helper.rb +42 -0
- data/lib/fluent/plugin_helper/child_process.rb +298 -0
- data/lib/fluent/plugin_helper/compat_parameters.rb +224 -0
- data/lib/fluent/plugin_helper/event_emitter.rb +80 -0
- data/lib/fluent/plugin_helper/event_loop.rb +118 -0
- data/lib/fluent/plugin_helper/formatter.rb +149 -0
- data/lib/fluent/plugin_helper/inject.rb +125 -0
- data/lib/fluent/plugin_helper/parser.rb +147 -0
- data/lib/fluent/plugin_helper/retry_state.rb +177 -0
- data/lib/fluent/plugin_helper/storage.rb +331 -0
- data/lib/fluent/plugin_helper/thread.rb +147 -0
- data/lib/fluent/plugin_helper/timer.rb +90 -0
- data/lib/fluent/plugin_id.rb +63 -0
- data/lib/fluent/process.rb +504 -0
- data/lib/fluent/registry.rb +99 -0
- data/lib/fluent/root_agent.rb +314 -0
- data/lib/fluent/rpc.rb +94 -0
- data/lib/fluent/supervisor.rb +680 -0
- data/lib/fluent/system_config.rb +122 -0
- data/lib/fluent/test.rb +56 -0
- data/lib/fluent/test/base.rb +85 -0
- data/lib/fluent/test/driver/base.rb +179 -0
- data/lib/fluent/test/driver/base_owned.rb +70 -0
- data/lib/fluent/test/driver/base_owner.rb +125 -0
- data/lib/fluent/test/driver/event_feeder.rb +98 -0
- data/lib/fluent/test/driver/filter.rb +57 -0
- data/lib/fluent/test/driver/formatter.rb +30 -0
- data/lib/fluent/test/driver/input.rb +31 -0
- data/lib/fluent/test/driver/multi_output.rb +52 -0
- data/lib/fluent/test/driver/output.rb +76 -0
- data/lib/fluent/test/driver/parser.rb +30 -0
- data/lib/fluent/test/driver/test_event_router.rb +45 -0
- data/lib/fluent/test/filter_test.rb +77 -0
- data/lib/fluent/test/formatter_test.rb +65 -0
- data/lib/fluent/test/helpers.rb +79 -0
- data/lib/fluent/test/input_test.rb +172 -0
- data/lib/fluent/test/log.rb +73 -0
- data/lib/fluent/test/output_test.rb +156 -0
- data/lib/fluent/test/parser_test.rb +70 -0
- data/lib/fluent/time.rb +175 -0
- data/lib/fluent/timezone.rb +133 -0
- data/lib/fluent/unique_id.rb +39 -0
- data/lib/fluent/version.rb +21 -0
- data/lib/fluent/winsvc.rb +71 -0
- data/test/compat/test_calls_super.rb +166 -0
- data/test/compat/test_parser.rb +82 -0
- data/test/config/assertions.rb +42 -0
- data/test/config/test_config_parser.rb +507 -0
- data/test/config/test_configurable.rb +1194 -0
- data/test/config/test_configure_proxy.rb +386 -0
- data/test/config/test_dsl.rb +415 -0
- data/test/config/test_element.rb +403 -0
- data/test/config/test_literal_parser.rb +297 -0
- data/test/config/test_section.rb +184 -0
- data/test/config/test_system_config.rb +120 -0
- data/test/config/test_types.rb +171 -0
- data/test/helper.rb +119 -0
- data/test/plugin/data/2010/01/20100102-030405.log +0 -0
- data/test/plugin/data/2010/01/20100102-030406.log +0 -0
- data/test/plugin/data/2010/01/20100102.log +0 -0
- data/test/plugin/data/log/bar +0 -0
- data/test/plugin/data/log/foo/bar.log +0 -0
- data/test/plugin/data/log/test.log +0 -0
- data/test/plugin/test_bare_output.rb +118 -0
- data/test/plugin/test_base.rb +75 -0
- data/test/plugin/test_buf_file.rb +571 -0
- data/test/plugin/test_buf_memory.rb +42 -0
- data/test/plugin/test_buffer.rb +1200 -0
- data/test/plugin/test_buffer_chunk.rb +168 -0
- data/test/plugin/test_buffer_file_chunk.rb +771 -0
- data/test/plugin/test_buffer_memory_chunk.rb +265 -0
- data/test/plugin/test_file_util.rb +96 -0
- data/test/plugin/test_filter.rb +353 -0
- data/test/plugin/test_filter_grep.rb +119 -0
- data/test/plugin/test_filter_record_transformer.rb +600 -0
- data/test/plugin/test_filter_stdout.rb +211 -0
- data/test/plugin/test_formatter_csv.rb +94 -0
- data/test/plugin/test_formatter_json.rb +30 -0
- data/test/plugin/test_formatter_ltsv.rb +52 -0
- data/test/plugin/test_formatter_msgpack.rb +28 -0
- data/test/plugin/test_formatter_out_file.rb +95 -0
- data/test/plugin/test_formatter_single_value.rb +38 -0
- data/test/plugin/test_in_debug_agent.rb +28 -0
- data/test/plugin/test_in_dummy.rb +188 -0
- data/test/plugin/test_in_exec.rb +133 -0
- data/test/plugin/test_in_forward.rb +635 -0
- data/test/plugin/test_in_gc_stat.rb +39 -0
- data/test/plugin/test_in_http.rb +442 -0
- data/test/plugin/test_in_monitor_agent.rb +329 -0
- data/test/plugin/test_in_object_space.rb +64 -0
- data/test/plugin/test_in_syslog.rb +205 -0
- data/test/plugin/test_in_tail.rb +1001 -0
- data/test/plugin/test_in_tcp.rb +102 -0
- data/test/plugin/test_in_udp.rb +121 -0
- data/test/plugin/test_in_unix.rb +126 -0
- data/test/plugin/test_input.rb +122 -0
- data/test/plugin/test_multi_output.rb +180 -0
- data/test/plugin/test_out_buffered_null.rb +79 -0
- data/test/plugin/test_out_buffered_stdout.rb +122 -0
- data/test/plugin/test_out_copy.rb +160 -0
- data/test/plugin/test_out_exec.rb +155 -0
- data/test/plugin/test_out_exec_filter.rb +262 -0
- data/test/plugin/test_out_file.rb +383 -0
- data/test/plugin/test_out_forward.rb +590 -0
- data/test/plugin/test_out_null.rb +29 -0
- data/test/plugin/test_out_relabel.rb +28 -0
- data/test/plugin/test_out_roundrobin.rb +146 -0
- data/test/plugin/test_out_stdout.rb +92 -0
- data/test/plugin/test_out_stream.rb +93 -0
- data/test/plugin/test_output.rb +568 -0
- data/test/plugin/test_output_as_buffered.rb +1604 -0
- data/test/plugin/test_output_as_buffered_overflow.rb +250 -0
- data/test/plugin/test_output_as_buffered_retries.rb +839 -0
- data/test/plugin/test_output_as_buffered_secondary.rb +817 -0
- data/test/plugin/test_output_as_standard.rb +374 -0
- data/test/plugin/test_owned_by.rb +35 -0
- data/test/plugin/test_parser_apache.rb +42 -0
- data/test/plugin/test_parser_apache2.rb +38 -0
- data/test/plugin/test_parser_apache_error.rb +45 -0
- data/test/plugin/test_parser_base.rb +32 -0
- data/test/plugin/test_parser_csv.rb +104 -0
- data/test/plugin/test_parser_json.rb +107 -0
- data/test/plugin/test_parser_labeled_tsv.rb +129 -0
- data/test/plugin/test_parser_multiline.rb +100 -0
- data/test/plugin/test_parser_nginx.rb +48 -0
- data/test/plugin/test_parser_none.rb +53 -0
- data/test/plugin/test_parser_regexp.rb +277 -0
- data/test/plugin/test_parser_syslog.rb +66 -0
- data/test/plugin/test_parser_time.rb +46 -0
- data/test/plugin/test_parser_tsv.rb +121 -0
- data/test/plugin/test_storage.rb +167 -0
- data/test/plugin/test_storage_local.rb +8 -0
- data/test/plugin/test_string_util.rb +26 -0
- data/test/plugin_helper/test_child_process.rb +608 -0
- data/test/plugin_helper/test_compat_parameters.rb +242 -0
- data/test/plugin_helper/test_event_emitter.rb +51 -0
- data/test/plugin_helper/test_event_loop.rb +52 -0
- data/test/plugin_helper/test_formatter.rb +252 -0
- data/test/plugin_helper/test_inject.rb +487 -0
- data/test/plugin_helper/test_parser.rb +263 -0
- data/test/plugin_helper/test_retry_state.rb +399 -0
- data/test/plugin_helper/test_storage.rb +521 -0
- data/test/plugin_helper/test_thread.rb +164 -0
- data/test/plugin_helper/test_timer.rb +131 -0
- data/test/scripts/exec_script.rb +32 -0
- data/test/scripts/fluent/plugin/formatter_known.rb +8 -0
- data/test/scripts/fluent/plugin/out_test.rb +81 -0
- data/test/scripts/fluent/plugin/out_test2.rb +80 -0
- data/test/scripts/fluent/plugin/parser_known.rb +4 -0
- data/test/test_config.rb +179 -0
- data/test/test_configdsl.rb +148 -0
- data/test/test_event.rb +329 -0
- data/test/test_event_router.rb +331 -0
- data/test/test_event_time.rb +184 -0
- data/test/test_filter.rb +121 -0
- data/test/test_formatter.rb +319 -0
- data/test/test_input.rb +31 -0
- data/test/test_log.rb +572 -0
- data/test/test_match.rb +137 -0
- data/test/test_mixin.rb +351 -0
- data/test/test_output.rb +214 -0
- data/test/test_plugin_classes.rb +136 -0
- data/test/test_plugin_helper.rb +81 -0
- data/test/test_process.rb +48 -0
- data/test/test_root_agent.rb +278 -0
- data/test/test_supervisor.rb +339 -0
- data/test/test_time_formatter.rb +186 -0
- data/test/test_unique_id.rb +47 -0
- metadata +823 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'singleton'
|
18
|
+
|
19
|
+
module Fluent
|
20
|
+
module Compat
|
21
|
+
# TODO: remove when old plugin API are removed
|
22
|
+
class NullOutputChain
|
23
|
+
include Singleton
|
24
|
+
|
25
|
+
def next
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class OutputChain
|
30
|
+
def initialize(array, tag, es, chain=NullOutputChain.instance)
|
31
|
+
@array = array
|
32
|
+
@tag = tag
|
33
|
+
@es = es
|
34
|
+
@offset = 0
|
35
|
+
@chain = chain
|
36
|
+
end
|
37
|
+
|
38
|
+
def next
|
39
|
+
if @array.length <= @offset
|
40
|
+
return @chain.next
|
41
|
+
end
|
42
|
+
@offset += 1
|
43
|
+
@array[@offset-1].emit_events(@tag, @es)
|
44
|
+
self.next
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
class CopyOutputChain < OutputChain
|
49
|
+
def next
|
50
|
+
if @array.length <= @offset
|
51
|
+
return @chain.next
|
52
|
+
end
|
53
|
+
@offset += 1
|
54
|
+
es = @array.length > @offset ? @es.dup : @es
|
55
|
+
@array[@offset-1].emit_events(@tag, es)
|
56
|
+
self.next
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,180 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'fluent/plugin'
|
18
|
+
require 'fluent/plugin/parser'
|
19
|
+
require 'fluent/mixin'
|
20
|
+
|
21
|
+
require 'fluent/plugin/parser_regexp'
|
22
|
+
require 'fluent/plugin/parser_json'
|
23
|
+
require 'fluent/plugin/parser_tsv'
|
24
|
+
require 'fluent/plugin/parser_ltsv'
|
25
|
+
require 'fluent/plugin/parser_csv'
|
26
|
+
require 'fluent/plugin/parser_none'
|
27
|
+
require 'fluent/plugin/parser_apache2'
|
28
|
+
require 'fluent/plugin/parser_syslog'
|
29
|
+
require 'fluent/plugin/parser_multiline'
|
30
|
+
|
31
|
+
module Fluent
|
32
|
+
module Compat
|
33
|
+
class Parser < Fluent::Plugin::Parser
|
34
|
+
# TODO: warn when deprecated
|
35
|
+
end
|
36
|
+
|
37
|
+
class TextParser
|
38
|
+
# Keep backward compatibility for existing plugins
|
39
|
+
ParserError = Fluent::Plugin::Parser::ParserError
|
40
|
+
# TODO: will be removed at v1
|
41
|
+
TypeConverter = Fluent::TypeConverter
|
42
|
+
|
43
|
+
def initialize
|
44
|
+
# TODO: warn when deprecated
|
45
|
+
@parser = nil
|
46
|
+
@estimate_current_event = nil
|
47
|
+
end
|
48
|
+
|
49
|
+
attr_reader :parser
|
50
|
+
|
51
|
+
# SET false BEFORE CONFIGURE, to return nil when time not parsed
|
52
|
+
# 'configure()' may raise errors for unexpected configurations
|
53
|
+
attr_accessor :estimate_current_event
|
54
|
+
|
55
|
+
def configure(conf, required=true)
|
56
|
+
format = conf['format']
|
57
|
+
|
58
|
+
@parser = TextParser.lookup(format)
|
59
|
+
if ! @estimate_current_event.nil? && @parser.respond_to?(:'estimate_current_event=')
|
60
|
+
@parser.estimate_current_event = @estimate_current_event
|
61
|
+
end
|
62
|
+
|
63
|
+
if @parser.respond_to?(:configure)
|
64
|
+
@parser.configure(conf)
|
65
|
+
end
|
66
|
+
|
67
|
+
return true
|
68
|
+
end
|
69
|
+
|
70
|
+
def parse(text, &block)
|
71
|
+
if block
|
72
|
+
@parser.parse(text, &block)
|
73
|
+
else
|
74
|
+
@parser.parse(text) { |time, record|
|
75
|
+
return time, record
|
76
|
+
}
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.register_template(type, template, time_format=nil)
|
81
|
+
# TODO: warn when deprecated to use Plugin.register_parser directly
|
82
|
+
if template.is_a?(Class) || template.respond_to?(:call)
|
83
|
+
Fluent::Plugin.register_parser(type, template)
|
84
|
+
elsif template.is_a?(Regexp)
|
85
|
+
Fluent::Plugin.register_parser(type, Proc.new { RegexpParser.new(template, {'time_format' => time_format}) })
|
86
|
+
else
|
87
|
+
raise ArgumentError, "Template for parser must be a Class, callable object or regular expression object"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.lookup(format)
|
92
|
+
# TODO: warn when deprecated to use Plugin.new_parser or RegexpParser.new directly
|
93
|
+
if format.nil?
|
94
|
+
raise ConfigError, "'format' parameter is required"
|
95
|
+
end
|
96
|
+
|
97
|
+
if format[0] == ?/ && format[format.length-1] == ?/
|
98
|
+
# regexp
|
99
|
+
begin
|
100
|
+
regexp = Regexp.new(format[1..-2])
|
101
|
+
if regexp.named_captures.empty?
|
102
|
+
raise "No named captures"
|
103
|
+
end
|
104
|
+
rescue
|
105
|
+
raise ConfigError, "Invalid regexp '#{format[1..-2]}': #{$!}"
|
106
|
+
end
|
107
|
+
|
108
|
+
RegexpParser.new(regexp)
|
109
|
+
else
|
110
|
+
# built-in template
|
111
|
+
begin
|
112
|
+
Fluent::Plugin.new_parser(format)
|
113
|
+
rescue ConfigError # keep same error message
|
114
|
+
raise ConfigError, "Unknown format template '#{format}'"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
class TimeParser < Fluent::Plugin::Parser::TimeParser
|
120
|
+
# TODO: warn when deprecated
|
121
|
+
end
|
122
|
+
|
123
|
+
class RegexpParser < Fluent::Plugin::RegexpParser
|
124
|
+
# TODO: warn when deprecated
|
125
|
+
def initialize(regexp, conf = {})
|
126
|
+
super()
|
127
|
+
|
128
|
+
unless conf.empty?
|
129
|
+
unless conf.is_a?(Config::Element)
|
130
|
+
conf = Config::Element.new('default_regexp_conf', '', conf, [])
|
131
|
+
end
|
132
|
+
configure(conf)
|
133
|
+
end
|
134
|
+
|
135
|
+
@regexp = regexp
|
136
|
+
end
|
137
|
+
|
138
|
+
def patterns
|
139
|
+
{'format' => @regexp, 'time_format' => @time_format}
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
class ValuesParser < Fluent::Plugin::ValuesParser
|
144
|
+
# TODO: warn when deprecated
|
145
|
+
end
|
146
|
+
|
147
|
+
class JSONParser < Fluent::Plugin::JSONParser
|
148
|
+
# TODO: warn when deprecated
|
149
|
+
end
|
150
|
+
|
151
|
+
class TSVParser < Fluent::Plugin::TSVParser
|
152
|
+
# TODO: warn when deprecated
|
153
|
+
end
|
154
|
+
|
155
|
+
class LabeledTSVParser < Fluent::Plugin::LabeledTSVParser
|
156
|
+
# TODO: warn when deprecated
|
157
|
+
end
|
158
|
+
|
159
|
+
class CSVParser < Fluent::Plugin::CSVParser
|
160
|
+
# TODO: warn when deprecated
|
161
|
+
end
|
162
|
+
|
163
|
+
class NoneParser < Fluent::Plugin::NoneParser
|
164
|
+
# TODO: warn when deprecated
|
165
|
+
end
|
166
|
+
|
167
|
+
class ApacheParser < Fluent::Plugin::Apache2Parser
|
168
|
+
# TODO: warn when deprecated
|
169
|
+
end
|
170
|
+
|
171
|
+
class SyslogParser < Fluent::Plugin::SyslogParser
|
172
|
+
# TODO: warn when deprecated
|
173
|
+
end
|
174
|
+
|
175
|
+
class MultilineParser < Fluent::Plugin::MultilineParser
|
176
|
+
# TODO: warn when deprecated
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'fluent/plugin_helper/compat_parameters'
|
18
|
+
|
19
|
+
module Fluent
|
20
|
+
module Compat
|
21
|
+
module ParserUtils
|
22
|
+
PARSER_PARAMS = Fluent::PluginHelper::CompatParameters::PARSER_PARAMS
|
23
|
+
|
24
|
+
def self.convert_parser_conf(conf)
|
25
|
+
return if conf.elements(name: 'parse').first
|
26
|
+
|
27
|
+
parser_params = {}
|
28
|
+
PARSER_PARAMS.each do |older, newer|
|
29
|
+
next unless newer
|
30
|
+
if conf.has_key?(older)
|
31
|
+
parser_params[newer] = conf[older]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
unless parser_params.empty?
|
35
|
+
conf.elements << Fluent::Config::Element.new('parse', '', parser_params, [])
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'fluent/configurable'
|
18
|
+
|
19
|
+
module Fluent
|
20
|
+
module Compat
|
21
|
+
module PropagateDefault
|
22
|
+
# This mixin is to prepend to 3rd party plugins of v0.12 APIs.
|
23
|
+
# 3rd party plugins may override default values of some parameters, like `buffer_type`.
|
24
|
+
# But default values of such parameters will NOT used, but defaults of <buffer>@type</buffer>
|
25
|
+
# will be used in fact. It should bring troubles.
|
26
|
+
# This mixin defines Class method .config_param and .config_set_default (which should be used by extend)
|
27
|
+
# to propagate changes of default values to subsections.
|
28
|
+
def self.included(mod)
|
29
|
+
mod.extend(ClassMethods)
|
30
|
+
end
|
31
|
+
|
32
|
+
module ClassMethods
|
33
|
+
CONFIGURABLE_CLASS_METHODS = Fluent::Configurable::ClassMethods
|
34
|
+
|
35
|
+
def config_param(name, type = nil, **kwargs, &block)
|
36
|
+
CONFIGURABLE_CLASS_METHODS.instance_method(:config_param).bind(self).call(name, type, **kwargs, &block)
|
37
|
+
pparams = propagate_default_params
|
38
|
+
if kwargs.has_key?(:default) && pparams[name.to_s]
|
39
|
+
newer = pparams[name.to_s].to_sym
|
40
|
+
overridden_default_value = kwargs[:default]
|
41
|
+
|
42
|
+
CONFIGURABLE_CLASS_METHODS.instance_method(:config_section).bind(self).call(:buffer) do
|
43
|
+
config_set_default newer, overridden_default_value
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def config_set_default(name, defval)
|
49
|
+
CONFIGURABLE_CLASS_METHODS.instance_method(:config_set_default).bind(self).call(name, defval)
|
50
|
+
pparams = propagate_default_params
|
51
|
+
if pparams[name.to_s]
|
52
|
+
newer = pparams[name.to_s].to_sym
|
53
|
+
|
54
|
+
CONFIGURABLE_CLASS_METHODS.instance_method(:config_section).bind(self).call(:buffer) do
|
55
|
+
self.config_set_default newer, defval
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
module Fluent
|
18
|
+
module Compat
|
19
|
+
module RecordFilterMixin
|
20
|
+
def filter_record(tag, time, record)
|
21
|
+
end
|
22
|
+
|
23
|
+
def format_stream(tag, es)
|
24
|
+
out = ''
|
25
|
+
es.each {|time,record|
|
26
|
+
tag_temp = tag.dup
|
27
|
+
filter_record(tag_temp, time, record)
|
28
|
+
out << format(tag_temp, time, record)
|
29
|
+
}
|
30
|
+
out
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'fluent/config/error'
|
18
|
+
require 'fluent/config/types'
|
19
|
+
require 'fluent/compat/record_filter_mixin'
|
20
|
+
|
21
|
+
module Fluent
|
22
|
+
module Compat
|
23
|
+
module SetTagKeyMixin
|
24
|
+
include RecordFilterMixin
|
25
|
+
|
26
|
+
attr_accessor :include_tag_key, :tag_key
|
27
|
+
|
28
|
+
def configure(conf)
|
29
|
+
@include_tag_key = false
|
30
|
+
|
31
|
+
super
|
32
|
+
|
33
|
+
if s = conf['include_tag_key']
|
34
|
+
include_tag_key = Fluent::Config.bool_value(s)
|
35
|
+
raise Fluent::ConfigError, "Invalid boolean expression '#{s}' for include_tag_key parameter" if include_tag_key.nil?
|
36
|
+
|
37
|
+
@include_tag_key = include_tag_key
|
38
|
+
end
|
39
|
+
|
40
|
+
@tag_key = conf['tag_key'] || 'tag' if @include_tag_key
|
41
|
+
end
|
42
|
+
|
43
|
+
def filter_record(tag, time, record)
|
44
|
+
super
|
45
|
+
|
46
|
+
record[@tag_key] = tag if @include_tag_key
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
#
|
2
|
+
# Fluentd
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
#
|
16
|
+
|
17
|
+
require 'fluent/config/error'
|
18
|
+
require 'fluent/compat/record_filter_mixin'
|
19
|
+
require 'fluent/time'
|
20
|
+
require 'fluent/timezone'
|
21
|
+
|
22
|
+
module Fluent
|
23
|
+
module Compat
|
24
|
+
module SetTimeKeyMixin
|
25
|
+
include RecordFilterMixin
|
26
|
+
|
27
|
+
attr_accessor :include_time_key, :time_key, :localtime, :timezone
|
28
|
+
|
29
|
+
def configure(conf)
|
30
|
+
@include_time_key = false
|
31
|
+
@localtime = false
|
32
|
+
@timezone = nil
|
33
|
+
|
34
|
+
super
|
35
|
+
|
36
|
+
if s = conf['include_time_key']
|
37
|
+
include_time_key = Fluent::Config.bool_value(s)
|
38
|
+
raise Fluent::ConfigError, "Invalid boolean expression '#{s}' for include_time_key parameter" if include_time_key.nil?
|
39
|
+
|
40
|
+
@include_time_key = include_time_key
|
41
|
+
end
|
42
|
+
|
43
|
+
if @include_time_key
|
44
|
+
@time_key = conf['time_key'] || 'time'
|
45
|
+
@time_format = conf['time_format']
|
46
|
+
|
47
|
+
if conf['localtime']
|
48
|
+
@localtime = true
|
49
|
+
elsif conf['utc']
|
50
|
+
@localtime = false
|
51
|
+
end
|
52
|
+
|
53
|
+
if conf['timezone']
|
54
|
+
@timezone = conf['timezone']
|
55
|
+
Fluent::Timezone.validate!(@timezone)
|
56
|
+
end
|
57
|
+
|
58
|
+
@timef = Fluent::TimeFormatter.new(@time_format, @localtime, @timezone)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def filter_record(tag, time, record)
|
63
|
+
super
|
64
|
+
|
65
|
+
record[@time_key] = @timef.format(time) if @include_time_key
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|