fluentd 0.12.40 → 1.6.2

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.

Files changed (428) hide show
  1. checksums.yaml +5 -5
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +39 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  4. data/.github/ISSUE_TEMPLATE.md +17 -0
  5. data/.github/PULL_REQUEST_TEMPLATE.md +13 -0
  6. data/.gitignore +5 -0
  7. data/.gitlab/cicd-template.yaml +10 -0
  8. data/.gitlab-ci.yml +147 -0
  9. data/.travis.yml +56 -20
  10. data/ADOPTERS.md +5 -0
  11. data/CHANGELOG.md +1369 -0
  12. data/CONTRIBUTING.md +16 -5
  13. data/GOVERNANCE.md +55 -0
  14. data/Gemfile +5 -0
  15. data/GithubWorkflow.md +78 -0
  16. data/LICENSE +202 -0
  17. data/MAINTAINERS.md +7 -0
  18. data/README.md +23 -11
  19. data/Rakefile +48 -2
  20. data/Vagrantfile +17 -0
  21. data/appveyor.yml +37 -0
  22. data/bin/fluent-binlog-reader +7 -0
  23. data/bin/fluent-ca-generate +6 -0
  24. data/bin/fluent-plugin-config-format +5 -0
  25. data/bin/fluent-plugin-generate +5 -0
  26. data/bin/fluentd +3 -0
  27. data/code-of-conduct.md +3 -0
  28. data/example/copy_roundrobin.conf +39 -0
  29. data/example/counter.conf +18 -0
  30. data/example/in_dummy_blocks.conf +17 -0
  31. data/example/in_dummy_with_compression.conf +23 -0
  32. data/example/in_forward.conf +7 -0
  33. data/example/in_forward_client.conf +37 -0
  34. data/example/in_forward_shared_key.conf +15 -0
  35. data/example/in_forward_tls.conf +14 -0
  36. data/example/in_forward_users.conf +24 -0
  37. data/example/in_forward_workers.conf +21 -0
  38. data/example/in_http.conf +3 -1
  39. data/example/in_out_forward.conf +17 -0
  40. data/example/logevents.conf +25 -0
  41. data/example/multi_filters.conf +61 -0
  42. data/example/out_exec_filter.conf +42 -0
  43. data/example/out_forward.conf +13 -13
  44. data/example/out_forward_buf_file.conf +23 -0
  45. data/example/out_forward_client.conf +109 -0
  46. data/example/out_forward_heartbeat_none.conf +16 -0
  47. data/example/out_forward_shared_key.conf +36 -0
  48. data/example/out_forward_tls.conf +18 -0
  49. data/example/out_forward_users.conf +65 -0
  50. data/example/out_null.conf +36 -0
  51. data/example/secondary_file.conf +42 -0
  52. data/example/suppress_config_dump.conf +7 -0
  53. data/example/worker_section.conf +36 -0
  54. data/fluent.conf +29 -0
  55. data/fluentd.gemspec +21 -11
  56. data/lib/fluent/agent.rb +67 -90
  57. data/lib/fluent/clock.rb +62 -0
  58. data/lib/fluent/command/binlog_reader.rb +244 -0
  59. data/lib/fluent/command/ca_generate.rb +181 -0
  60. data/lib/fluent/command/cat.rb +42 -18
  61. data/lib/fluent/command/debug.rb +12 -10
  62. data/lib/fluent/command/fluentd.rb +153 -5
  63. data/lib/fluent/command/plugin_config_formatter.rb +292 -0
  64. data/lib/fluent/command/plugin_generator.rb +324 -0
  65. data/lib/fluent/compat/call_super_mixin.rb +67 -0
  66. data/lib/fluent/compat/detach_process_mixin.rb +33 -0
  67. data/lib/fluent/compat/exec_util.rb +129 -0
  68. data/lib/fluent/compat/file_util.rb +54 -0
  69. data/lib/fluent/compat/filter.rb +68 -0
  70. data/lib/fluent/compat/formatter.rb +111 -0
  71. data/lib/fluent/compat/formatter_utils.rb +85 -0
  72. data/lib/fluent/compat/handle_tag_and_time_mixin.rb +62 -0
  73. data/lib/fluent/compat/handle_tag_name_mixin.rb +53 -0
  74. data/lib/fluent/compat/input.rb +49 -0
  75. data/lib/fluent/compat/output.rb +718 -0
  76. data/lib/fluent/compat/output_chain.rb +60 -0
  77. data/lib/fluent/compat/parser.rb +310 -0
  78. data/lib/fluent/compat/parser_utils.rb +40 -0
  79. data/lib/fluent/compat/propagate_default.rb +62 -0
  80. data/lib/fluent/compat/record_filter_mixin.rb +34 -0
  81. data/lib/fluent/compat/set_tag_key_mixin.rb +50 -0
  82. data/lib/fluent/compat/set_time_key_mixin.rb +69 -0
  83. data/lib/fluent/compat/socket_util.rb +165 -0
  84. data/lib/fluent/compat/string_util.rb +34 -0
  85. data/lib/fluent/compat/structured_format_mixin.rb +26 -0
  86. data/lib/fluent/compat/type_converter.rb +90 -0
  87. data/lib/fluent/config/configure_proxy.rb +210 -62
  88. data/lib/fluent/config/dsl.rb +12 -5
  89. data/lib/fluent/config/element.rb +107 -9
  90. data/lib/fluent/config/literal_parser.rb +9 -3
  91. data/lib/fluent/config/parser.rb +4 -4
  92. data/lib/fluent/config/section.rb +51 -14
  93. data/lib/fluent/config/types.rb +28 -13
  94. data/lib/fluent/config/v1_parser.rb +3 -5
  95. data/lib/fluent/config.rb +23 -20
  96. data/lib/fluent/configurable.rb +79 -21
  97. data/lib/fluent/counter/base_socket.rb +46 -0
  98. data/lib/fluent/counter/client.rb +297 -0
  99. data/lib/fluent/counter/error.rb +86 -0
  100. data/lib/fluent/counter/mutex_hash.rb +163 -0
  101. data/lib/fluent/counter/server.rb +273 -0
  102. data/lib/fluent/counter/store.rb +205 -0
  103. data/lib/fluent/counter/validator.rb +145 -0
  104. data/lib/fluent/counter.rb +23 -0
  105. data/lib/fluent/daemon.rb +15 -0
  106. data/lib/fluent/engine.rb +102 -65
  107. data/lib/fluent/env.rb +7 -3
  108. data/lib/fluent/error.rb +30 -0
  109. data/lib/fluent/event.rb +197 -21
  110. data/lib/fluent/event_router.rb +93 -10
  111. data/lib/fluent/filter.rb +2 -50
  112. data/lib/fluent/formatter.rb +4 -293
  113. data/lib/fluent/input.rb +2 -32
  114. data/lib/fluent/label.rb +10 -2
  115. data/lib/fluent/load.rb +3 -3
  116. data/lib/fluent/log.rb +348 -81
  117. data/lib/fluent/match.rb +37 -36
  118. data/lib/fluent/mixin.rb +12 -176
  119. data/lib/fluent/msgpack_factory.rb +62 -0
  120. data/lib/fluent/output.rb +10 -612
  121. data/lib/fluent/output_chain.rb +23 -0
  122. data/lib/fluent/parser.rb +4 -800
  123. data/lib/fluent/plugin/bare_output.rb +63 -0
  124. data/lib/fluent/plugin/base.rb +192 -0
  125. data/lib/fluent/plugin/buf_file.rb +128 -174
  126. data/lib/fluent/plugin/buf_memory.rb +9 -92
  127. data/lib/fluent/plugin/buffer/chunk.rb +221 -0
  128. data/lib/fluent/plugin/buffer/file_chunk.rb +383 -0
  129. data/lib/fluent/plugin/buffer/memory_chunk.rb +90 -0
  130. data/lib/fluent/plugin/buffer.rb +779 -0
  131. data/lib/fluent/plugin/compressable.rb +92 -0
  132. data/lib/fluent/plugin/exec_util.rb +3 -108
  133. data/lib/fluent/plugin/file_util.rb +4 -34
  134. data/lib/fluent/plugin/file_wrapper.rb +120 -0
  135. data/lib/fluent/plugin/filter.rb +93 -0
  136. data/lib/fluent/plugin/filter_grep.rb +117 -34
  137. data/lib/fluent/plugin/filter_parser.rb +85 -62
  138. data/lib/fluent/plugin/filter_record_transformer.rb +27 -39
  139. data/lib/fluent/plugin/filter_stdout.rb +15 -12
  140. data/lib/fluent/plugin/formatter.rb +50 -0
  141. data/lib/fluent/plugin/formatter_csv.rb +52 -0
  142. data/lib/fluent/plugin/formatter_hash.rb +33 -0
  143. data/lib/fluent/plugin/formatter_json.rb +55 -0
  144. data/lib/fluent/plugin/formatter_ltsv.rb +42 -0
  145. data/lib/fluent/plugin/formatter_msgpack.rb +33 -0
  146. data/lib/fluent/plugin/formatter_out_file.rb +51 -0
  147. data/lib/fluent/plugin/formatter_single_value.rb +34 -0
  148. data/lib/fluent/plugin/formatter_stdout.rb +76 -0
  149. data/lib/fluent/plugin/formatter_tsv.rb +38 -0
  150. data/lib/fluent/plugin/in_debug_agent.rb +17 -6
  151. data/lib/fluent/plugin/in_dummy.rb +47 -20
  152. data/lib/fluent/plugin/in_exec.rb +55 -123
  153. data/lib/fluent/plugin/in_forward.rb +299 -216
  154. data/lib/fluent/plugin/in_gc_stat.rb +14 -36
  155. data/lib/fluent/plugin/in_http.rb +204 -91
  156. data/lib/fluent/plugin/in_monitor_agent.rb +186 -258
  157. data/lib/fluent/plugin/in_object_space.rb +13 -41
  158. data/lib/fluent/plugin/in_syslog.rb +112 -134
  159. data/lib/fluent/plugin/in_tail.rb +408 -745
  160. data/lib/fluent/plugin/in_tcp.rb +66 -9
  161. data/lib/fluent/plugin/in_udp.rb +60 -11
  162. data/lib/fluent/plugin/{in_stream.rb → in_unix.rb} +8 -4
  163. data/lib/fluent/plugin/input.rb +37 -0
  164. data/lib/fluent/plugin/multi_output.rb +158 -0
  165. data/lib/fluent/plugin/out_copy.rb +23 -35
  166. data/lib/fluent/plugin/out_exec.rb +67 -70
  167. data/lib/fluent/plugin/out_exec_filter.rb +204 -271
  168. data/lib/fluent/plugin/out_file.rb +267 -73
  169. data/lib/fluent/plugin/out_forward.rb +854 -325
  170. data/lib/fluent/plugin/out_null.rb +42 -9
  171. data/lib/fluent/plugin/out_relabel.rb +9 -5
  172. data/lib/fluent/plugin/out_roundrobin.rb +18 -37
  173. data/lib/fluent/plugin/out_secondary_file.rb +133 -0
  174. data/lib/fluent/plugin/out_stdout.rb +43 -10
  175. data/lib/fluent/plugin/out_stream.rb +7 -2
  176. data/lib/fluent/plugin/output.rb +1498 -0
  177. data/lib/fluent/plugin/owned_by_mixin.rb +42 -0
  178. data/lib/fluent/plugin/parser.rb +191 -0
  179. data/lib/fluent/plugin/parser_apache.rb +28 -0
  180. data/lib/fluent/plugin/parser_apache2.rb +88 -0
  181. data/lib/fluent/plugin/parser_apache_error.rb +26 -0
  182. data/lib/fluent/plugin/parser_csv.rb +39 -0
  183. data/lib/fluent/plugin/parser_json.rb +94 -0
  184. data/lib/fluent/plugin/parser_ltsv.rb +49 -0
  185. data/lib/fluent/plugin/parser_msgpack.rb +50 -0
  186. data/lib/fluent/plugin/parser_multiline.rb +106 -0
  187. data/lib/fluent/plugin/parser_nginx.rb +28 -0
  188. data/lib/fluent/plugin/parser_none.rb +36 -0
  189. data/lib/fluent/plugin/parser_regexp.rb +68 -0
  190. data/lib/fluent/plugin/parser_syslog.rb +142 -0
  191. data/lib/fluent/plugin/parser_tsv.rb +42 -0
  192. data/lib/fluent/plugin/socket_util.rb +3 -143
  193. data/lib/fluent/plugin/storage.rb +84 -0
  194. data/lib/fluent/plugin/storage_local.rb +164 -0
  195. data/lib/fluent/plugin/string_util.rb +3 -15
  196. data/lib/fluent/plugin.rb +122 -121
  197. data/lib/fluent/plugin_helper/cert_option.rb +178 -0
  198. data/lib/fluent/plugin_helper/child_process.rb +364 -0
  199. data/lib/fluent/plugin_helper/compat_parameters.rb +333 -0
  200. data/lib/fluent/plugin_helper/counter.rb +51 -0
  201. data/lib/fluent/plugin_helper/event_emitter.rb +93 -0
  202. data/lib/fluent/plugin_helper/event_loop.rb +170 -0
  203. data/lib/fluent/plugin_helper/extract.rb +104 -0
  204. data/lib/fluent/plugin_helper/formatter.rb +147 -0
  205. data/lib/fluent/plugin_helper/http_server/app.rb +79 -0
  206. data/lib/fluent/plugin_helper/http_server/compat/server.rb +81 -0
  207. data/lib/fluent/plugin_helper/http_server/compat/webrick_handler.rb +58 -0
  208. data/lib/fluent/plugin_helper/http_server/methods.rb +35 -0
  209. data/lib/fluent/plugin_helper/http_server/request.rb +42 -0
  210. data/lib/fluent/plugin_helper/http_server/router.rb +54 -0
  211. data/lib/fluent/plugin_helper/http_server/server.rb +87 -0
  212. data/lib/fluent/plugin_helper/http_server.rb +76 -0
  213. data/lib/fluent/plugin_helper/inject.rb +151 -0
  214. data/lib/fluent/plugin_helper/parser.rb +147 -0
  215. data/lib/fluent/plugin_helper/record_accessor.rb +210 -0
  216. data/lib/fluent/plugin_helper/retry_state.rb +205 -0
  217. data/lib/fluent/plugin_helper/server.rb +807 -0
  218. data/lib/fluent/plugin_helper/socket.rb +250 -0
  219. data/lib/fluent/plugin_helper/socket_option.rb +80 -0
  220. data/lib/fluent/plugin_helper/storage.rb +349 -0
  221. data/lib/fluent/plugin_helper/thread.rb +179 -0
  222. data/lib/fluent/plugin_helper/timer.rb +92 -0
  223. data/lib/fluent/plugin_helper.rb +73 -0
  224. data/lib/fluent/plugin_id.rb +80 -0
  225. data/lib/fluent/process.rb +3 -489
  226. data/lib/fluent/registry.rb +52 -10
  227. data/lib/fluent/root_agent.rb +204 -42
  228. data/lib/fluent/supervisor.rb +597 -359
  229. data/lib/fluent/system_config.rb +131 -42
  230. data/lib/fluent/test/base.rb +6 -54
  231. data/lib/fluent/test/driver/base.rb +224 -0
  232. data/lib/fluent/test/driver/base_owned.rb +70 -0
  233. data/lib/fluent/test/driver/base_owner.rb +135 -0
  234. data/lib/fluent/test/driver/event_feeder.rb +98 -0
  235. data/lib/fluent/test/driver/filter.rb +57 -0
  236. data/lib/fluent/test/driver/formatter.rb +30 -0
  237. data/lib/fluent/test/driver/input.rb +31 -0
  238. data/lib/fluent/test/driver/multi_output.rb +53 -0
  239. data/lib/fluent/test/driver/output.rb +102 -0
  240. data/lib/fluent/test/driver/parser.rb +30 -0
  241. data/lib/fluent/test/driver/test_event_router.rb +45 -0
  242. data/lib/fluent/test/filter_test.rb +0 -1
  243. data/lib/fluent/test/formatter_test.rb +4 -1
  244. data/lib/fluent/test/helpers.rb +58 -10
  245. data/lib/fluent/test/input_test.rb +27 -19
  246. data/lib/fluent/test/log.rb +79 -0
  247. data/lib/fluent/test/output_test.rb +28 -39
  248. data/lib/fluent/test/parser_test.rb +3 -1
  249. data/lib/fluent/test/startup_shutdown.rb +46 -0
  250. data/lib/fluent/test.rb +33 -1
  251. data/lib/fluent/time.rb +450 -1
  252. data/lib/fluent/timezone.rb +27 -3
  253. data/lib/fluent/{status.rb → unique_id.rb} +15 -24
  254. data/lib/fluent/version.rb +1 -1
  255. data/lib/fluent/winsvc.rb +85 -0
  256. data/templates/new_gem/Gemfile +3 -0
  257. data/templates/new_gem/README.md.erb +43 -0
  258. data/templates/new_gem/Rakefile +13 -0
  259. data/templates/new_gem/fluent-plugin.gemspec.erb +27 -0
  260. data/templates/new_gem/lib/fluent/plugin/filter.rb.erb +14 -0
  261. data/templates/new_gem/lib/fluent/plugin/formatter.rb.erb +14 -0
  262. data/templates/new_gem/lib/fluent/plugin/input.rb.erb +11 -0
  263. data/templates/new_gem/lib/fluent/plugin/output.rb.erb +11 -0
  264. data/templates/new_gem/lib/fluent/plugin/parser.rb.erb +15 -0
  265. data/templates/new_gem/test/helper.rb.erb +8 -0
  266. data/templates/new_gem/test/plugin/test_filter.rb.erb +18 -0
  267. data/templates/new_gem/test/plugin/test_formatter.rb.erb +18 -0
  268. data/templates/new_gem/test/plugin/test_input.rb.erb +18 -0
  269. data/templates/new_gem/test/plugin/test_output.rb.erb +18 -0
  270. data/templates/new_gem/test/plugin/test_parser.rb.erb +18 -0
  271. data/templates/plugin_config_formatter/param.md-compact.erb +25 -0
  272. data/templates/plugin_config_formatter/param.md.erb +34 -0
  273. data/templates/plugin_config_formatter/section.md.erb +12 -0
  274. data/test/command/test_binlog_reader.rb +346 -0
  275. data/test/command/test_ca_generate.rb +70 -0
  276. data/test/command/test_fluentd.rb +901 -0
  277. data/test/command/test_plugin_config_formatter.rb +276 -0
  278. data/test/command/test_plugin_generator.rb +92 -0
  279. data/test/compat/test_calls_super.rb +166 -0
  280. data/test/compat/test_parser.rb +92 -0
  281. data/test/config/test_config_parser.rb +126 -2
  282. data/test/config/test_configurable.rb +946 -187
  283. data/test/config/test_configure_proxy.rb +424 -74
  284. data/test/config/test_dsl.rb +11 -11
  285. data/test/config/test_element.rb +500 -0
  286. data/test/config/test_literal_parser.rb +8 -0
  287. data/test/config/test_plugin_configuration.rb +56 -0
  288. data/test/config/test_section.rb +79 -7
  289. data/test/config/test_system_config.rb +122 -35
  290. data/test/config/test_types.rb +38 -0
  291. data/test/counter/test_client.rb +559 -0
  292. data/test/counter/test_error.rb +44 -0
  293. data/test/counter/test_mutex_hash.rb +179 -0
  294. data/test/counter/test_server.rb +589 -0
  295. data/test/counter/test_store.rb +258 -0
  296. data/test/counter/test_validator.rb +137 -0
  297. data/test/helper.rb +89 -6
  298. data/test/helpers/fuzzy_assert.rb +89 -0
  299. data/test/plugin/test_bare_output.rb +118 -0
  300. data/test/plugin/test_base.rb +115 -0
  301. data/test/plugin/test_buf_file.rb +823 -460
  302. data/test/plugin/test_buf_memory.rb +32 -194
  303. data/test/plugin/test_buffer.rb +1233 -0
  304. data/test/plugin/test_buffer_chunk.rb +198 -0
  305. data/test/plugin/test_buffer_file_chunk.rb +844 -0
  306. data/test/plugin/test_buffer_memory_chunk.rb +338 -0
  307. data/test/plugin/test_compressable.rb +84 -0
  308. data/test/plugin/test_filter.rb +357 -0
  309. data/test/plugin/test_filter_grep.rb +540 -29
  310. data/test/plugin/test_filter_parser.rb +439 -452
  311. data/test/plugin/test_filter_record_transformer.rb +123 -166
  312. data/test/plugin/test_filter_stdout.rb +160 -72
  313. data/test/plugin/test_formatter_csv.rb +111 -0
  314. data/test/plugin/test_formatter_hash.rb +35 -0
  315. data/test/plugin/test_formatter_json.rb +51 -0
  316. data/test/plugin/test_formatter_ltsv.rb +62 -0
  317. data/test/plugin/test_formatter_msgpack.rb +28 -0
  318. data/test/plugin/test_formatter_out_file.rb +95 -0
  319. data/test/plugin/test_formatter_single_value.rb +38 -0
  320. data/test/plugin/test_formatter_tsv.rb +68 -0
  321. data/test/plugin/test_in_debug_agent.rb +24 -1
  322. data/test/plugin/test_in_dummy.rb +111 -18
  323. data/test/plugin/test_in_exec.rb +200 -113
  324. data/test/plugin/test_in_forward.rb +990 -387
  325. data/test/plugin/test_in_gc_stat.rb +10 -8
  326. data/test/plugin/test_in_http.rb +600 -224
  327. data/test/plugin/test_in_monitor_agent.rb +690 -0
  328. data/test/plugin/test_in_object_space.rb +24 -8
  329. data/test/plugin/test_in_syslog.rb +154 -215
  330. data/test/plugin/test_in_tail.rb +1006 -707
  331. data/test/plugin/test_in_tcp.rb +125 -48
  332. data/test/plugin/test_in_udp.rb +204 -63
  333. data/test/plugin/{test_in_stream.rb → test_in_unix.rb} +14 -13
  334. data/test/plugin/test_input.rb +126 -0
  335. data/test/plugin/test_metadata.rb +89 -0
  336. data/test/plugin/test_multi_output.rb +180 -0
  337. data/test/plugin/test_out_copy.rb +117 -112
  338. data/test/plugin/test_out_exec.rb +258 -53
  339. data/test/plugin/test_out_exec_filter.rb +538 -115
  340. data/test/plugin/test_out_file.rb +865 -178
  341. data/test/plugin/test_out_forward.rb +998 -210
  342. data/test/plugin/test_out_null.rb +105 -0
  343. data/test/plugin/test_out_relabel.rb +28 -0
  344. data/test/plugin/test_out_roundrobin.rb +36 -29
  345. data/test/plugin/test_out_secondary_file.rb +458 -0
  346. data/test/plugin/test_out_stdout.rb +135 -37
  347. data/test/plugin/test_out_stream.rb +18 -0
  348. data/test/plugin/test_output.rb +984 -0
  349. data/test/plugin/test_output_as_buffered.rb +2021 -0
  350. data/test/plugin/test_output_as_buffered_backup.rb +312 -0
  351. data/test/plugin/test_output_as_buffered_compress.rb +165 -0
  352. data/test/plugin/test_output_as_buffered_overflow.rb +250 -0
  353. data/test/plugin/test_output_as_buffered_retries.rb +911 -0
  354. data/test/plugin/test_output_as_buffered_secondary.rb +874 -0
  355. data/test/plugin/test_output_as_standard.rb +374 -0
  356. data/test/plugin/test_owned_by.rb +35 -0
  357. data/test/plugin/test_parser.rb +359 -0
  358. data/test/plugin/test_parser_apache.rb +42 -0
  359. data/test/plugin/test_parser_apache2.rb +47 -0
  360. data/test/plugin/test_parser_apache_error.rb +45 -0
  361. data/test/plugin/test_parser_csv.rb +103 -0
  362. data/test/plugin/test_parser_json.rb +138 -0
  363. data/test/plugin/test_parser_labeled_tsv.rb +145 -0
  364. data/test/plugin/test_parser_multiline.rb +100 -0
  365. data/test/plugin/test_parser_nginx.rb +88 -0
  366. data/test/plugin/test_parser_none.rb +52 -0
  367. data/test/plugin/test_parser_regexp.rb +289 -0
  368. data/test/plugin/test_parser_syslog.rb +441 -0
  369. data/test/plugin/test_parser_tsv.rb +122 -0
  370. data/test/plugin/test_storage.rb +167 -0
  371. data/test/plugin/test_storage_local.rb +335 -0
  372. data/test/plugin_helper/data/cert/cert-key.pem +27 -0
  373. data/test/plugin_helper/data/cert/cert-with-no-newline.pem +19 -0
  374. data/test/plugin_helper/data/cert/cert.pem +19 -0
  375. data/test/plugin_helper/http_server/test_app.rb +65 -0
  376. data/test/plugin_helper/http_server/test_route.rb +32 -0
  377. data/test/plugin_helper/test_cert_option.rb +16 -0
  378. data/test/plugin_helper/test_child_process.rb +794 -0
  379. data/test/plugin_helper/test_compat_parameters.rb +353 -0
  380. data/test/plugin_helper/test_event_emitter.rb +51 -0
  381. data/test/plugin_helper/test_event_loop.rb +52 -0
  382. data/test/plugin_helper/test_extract.rb +194 -0
  383. data/test/plugin_helper/test_formatter.rb +255 -0
  384. data/test/plugin_helper/test_http_server_helper.rb +205 -0
  385. data/test/plugin_helper/test_inject.rb +519 -0
  386. data/test/plugin_helper/test_parser.rb +264 -0
  387. data/test/plugin_helper/test_record_accessor.rb +197 -0
  388. data/test/plugin_helper/test_retry_state.rb +442 -0
  389. data/test/plugin_helper/test_server.rb +1714 -0
  390. data/test/plugin_helper/test_storage.rb +542 -0
  391. data/test/plugin_helper/test_thread.rb +164 -0
  392. data/test/plugin_helper/test_timer.rb +132 -0
  393. data/test/scripts/exec_script.rb +0 -6
  394. data/test/scripts/fluent/plugin/formatter1/formatter_test1.rb +7 -0
  395. data/test/scripts/fluent/plugin/formatter2/formatter_test2.rb +7 -0
  396. data/test/scripts/fluent/plugin/out_test.rb +23 -15
  397. data/test/scripts/fluent/plugin/out_test2.rb +80 -0
  398. data/test/test_clock.rb +164 -0
  399. data/test/test_config.rb +16 -7
  400. data/test/test_configdsl.rb +2 -2
  401. data/test/test_event.rb +360 -13
  402. data/test/test_event_router.rb +108 -11
  403. data/test/test_event_time.rb +199 -0
  404. data/test/test_filter.rb +48 -6
  405. data/test/test_formatter.rb +11 -391
  406. data/test/test_input.rb +1 -1
  407. data/test/test_log.rb +591 -31
  408. data/test/test_mixin.rb +1 -1
  409. data/test/test_output.rb +121 -185
  410. data/test/test_plugin.rb +251 -0
  411. data/test/test_plugin_classes.rb +177 -10
  412. data/test/test_plugin_helper.rb +81 -0
  413. data/test/test_plugin_id.rb +101 -0
  414. data/test/test_process.rb +8 -42
  415. data/test/test_root_agent.rb +766 -21
  416. data/test/test_supervisor.rb +481 -0
  417. data/test/test_test_drivers.rb +135 -0
  418. data/test/test_time_formatter.rb +282 -0
  419. data/test/test_time_parser.rb +231 -0
  420. data/test/test_unique_id.rb +47 -0
  421. metadata +454 -60
  422. data/COPYING +0 -14
  423. data/ChangeLog +0 -666
  424. data/lib/fluent/buffer.rb +0 -365
  425. data/lib/fluent/plugin/in_status.rb +0 -76
  426. data/test/plugin/test_in_status.rb +0 -38
  427. data/test/test_buffer.rb +0 -624
  428. data/test/test_parser.rb +0 -1305
@@ -0,0 +1,244 @@
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 'optparse'
18
+ require 'msgpack'
19
+
20
+ require 'fluent/msgpack_factory'
21
+ require 'fluent/formatter'
22
+ require 'fluent/plugin'
23
+ require 'fluent/config/element'
24
+ require 'fluent/engine'
25
+ require 'fluent/version'
26
+
27
+ class FluentBinlogReader
28
+ SUBCOMMAND = %w(cat head formats)
29
+ HELP_TEXT = <<HELP
30
+ Usage: fluent-binlog-reader <command> [<args>]
31
+
32
+ Commands of fluent-binlog-reader:
33
+ cat : Read files sequentially, writing them to standard output.
34
+ head : Display the beginning of a text file.
35
+ formats : Display plugins that you can use.
36
+
37
+ See 'fluent-binlog-reader <command> --help' for more information on a specific command.
38
+ HELP
39
+
40
+ def initialize(argv = ARGV)
41
+ @argv = argv
42
+ end
43
+
44
+ def call
45
+ command_class = BinlogReaderCommand.const_get(command)
46
+ command_class.new(@argv).call
47
+ end
48
+
49
+ private
50
+
51
+ def command
52
+ command = @argv.shift
53
+ if command
54
+ if command == '--version'
55
+ puts "#{File.basename($PROGRAM_NAME)} #{Fluent::VERSION}"
56
+ exit 0
57
+ elsif !SUBCOMMAND.include?(command)
58
+ usage "'#{command}' is not supported: Required subcommand : #{SUBCOMMAND.join(' | ')}"
59
+ end
60
+ else
61
+ usage "Required subcommand : #{SUBCOMMAND.join(' | ')}"
62
+ end
63
+
64
+ command.split('_').map(&:capitalize).join('')
65
+ end
66
+
67
+ def usage(msg = nil)
68
+ puts HELP_TEXT
69
+ puts "Error: #{msg}" if msg
70
+ exit 1
71
+ end
72
+ end
73
+
74
+ module BinlogReaderCommand
75
+ class Base
76
+ def initialize(argv = ARGV)
77
+ @argv = argv
78
+
79
+ @options = { plugin: [] }
80
+ @opt_parser = OptionParser.new do |opt|
81
+ opt.version = Fluent::VERSION
82
+ opt.separator 'Options:'
83
+
84
+ opt.on('-p DIR', '--plugin', 'add library directory path') do |v|
85
+ @options[:plugin] << v
86
+ end
87
+ end
88
+ end
89
+
90
+ def call
91
+ raise NotImplementedError, 'BUG: command MUST implement this method'
92
+ end
93
+
94
+ private
95
+
96
+ def usage(msg = nil)
97
+ puts @opt_parser.to_s
98
+ puts "Error: #{msg}" if msg
99
+ exit 1
100
+ end
101
+
102
+ def parse_options!
103
+ @opt_parser.parse!(@argv)
104
+
105
+ unless @options[:plugin].empty?
106
+ if dir = @options[:plugin].find { |d| !Dir.exist?(d) }
107
+ usage "Directory #{dir} doesn't exist"
108
+ else
109
+ @options[:plugin].each do |d|
110
+ Fluent::Plugin.add_plugin_dir(d)
111
+ end
112
+ end
113
+ end
114
+ rescue => e
115
+ usage e
116
+ end
117
+ end
118
+
119
+ module Formattable
120
+ DEFAULT_OPTIONS = {
121
+ format: :out_file
122
+ }
123
+
124
+ def initialize(argv = ARGV)
125
+ super
126
+ @options.merge!(DEFAULT_OPTIONS)
127
+ configure_option_parser
128
+ end
129
+
130
+ private
131
+
132
+ def configure_option_parser
133
+ @options.merge!(config_params: {})
134
+
135
+ @opt_parser.banner = "Usage: fluent-binlog-reader #{self.class.to_s.split('::').last.downcase} [options] file"
136
+
137
+ @opt_parser.on('-f TYPE', '--format', 'configure output format') do |v|
138
+ @options[:format] = v.to_sym
139
+ end
140
+
141
+ @opt_parser.on('-e KEY=VALUE', 'configure formatter config params') do |v|
142
+ key, value = v.split('=')
143
+ usage "#{v} is invalid. valid format is like `key=value`" unless value
144
+ @options[:config_params].merge!(key => value)
145
+ end
146
+ end
147
+
148
+ def lookup_formatter(format, params)
149
+ conf = Fluent::Config::Element.new('ROOT', '', params, [])
150
+ formatter = Fluent::Plugin.new_formatter(format)
151
+
152
+ if formatter.respond_to?(:configure)
153
+ formatter.configure(conf)
154
+ end
155
+ formatter
156
+ rescue => e
157
+ usage e
158
+ end
159
+ end
160
+
161
+ class Head < Base
162
+ include Formattable
163
+
164
+ DEFAULT_HEAD_OPTIONS = {
165
+ count: 5
166
+ }
167
+
168
+ def initialize(argv = ARGV)
169
+ super
170
+ @options.merge!(default_options)
171
+ parse_options!
172
+ end
173
+
174
+ def call
175
+ @formatter = lookup_formatter(@options[:format], @options[:config_params])
176
+
177
+ File.open(@path, 'rb') do |io|
178
+ i = 1
179
+ Fluent::MessagePackFactory.unpacker(io).each do |(time, record)|
180
+ print @formatter.format(@path, time, record) # path is used for tag
181
+ break if @options[:count] && i == @options[:count]
182
+ i += 1
183
+ end
184
+ end
185
+ end
186
+
187
+ private
188
+
189
+ def default_options
190
+ DEFAULT_HEAD_OPTIONS
191
+ end
192
+
193
+ def parse_options!
194
+ @opt_parser.on('-n COUNT', 'Set the number of lines to display') do |v|
195
+ @options[:count] = v.to_i
196
+ usage "illegal line count -- #{@options[:count]}" if @options[:count] < 1
197
+ end
198
+
199
+ super
200
+
201
+ usage 'Path is required' if @argv.empty?
202
+ @path = @argv.first
203
+ usage "#{@path} is not found" unless File.exist?(@path)
204
+ end
205
+ end
206
+
207
+ class Cat < Head
208
+ DEFAULT_CAT_OPTIONS = {
209
+ count: nil # Overwrite DEFAULT_HEAD_OPTIONS[:count]
210
+ }
211
+
212
+ def default_options
213
+ DEFAULT_CAT_OPTIONS
214
+ end
215
+ end
216
+
217
+ class Formats < Base
218
+ def initialize(argv = ARGV)
219
+ super
220
+ parse_options!
221
+ end
222
+
223
+ def call
224
+ prefix = Fluent::Plugin::FORMATTER_REGISTRY.dir_search_prefix || 'formatter_'
225
+
226
+ plugin_dirs = @options[:plugin]
227
+ unless plugin_dirs.empty?
228
+ plugin_dirs.each do |d|
229
+ Dir.glob("#{d}/#{prefix}*.rb").each do |path|
230
+ require File.absolute_path(path)
231
+ end
232
+ end
233
+ end
234
+
235
+ $LOAD_PATH.map do |lp|
236
+ Dir.glob("#{lp}/#{prefix}*.rb").each do |path|
237
+ require path
238
+ end
239
+ end
240
+
241
+ puts Fluent::Plugin::FORMATTER_REGISTRY.map.keys
242
+ end
243
+ end
244
+ end
@@ -0,0 +1,181 @@
1
+ require 'openssl'
2
+ require 'optparse'
3
+ require 'fileutils'
4
+ require 'fluent/version'
5
+
6
+ module Fluent
7
+ class CaGenerate
8
+ DEFAULT_OPTIONS = {
9
+ private_key_length: 2048,
10
+ cert_country: 'US',
11
+ cert_state: 'CA',
12
+ cert_locality: 'Mountain View',
13
+ cert_common_name: 'Fluentd Forward CA',
14
+ }
15
+ HELP_TEXT = <<HELP
16
+ Usage: fluent-ca-generate DIR_PATH PRIVATE_KEY_PASSPHRASE [--country COUNTRY] [--state STATE] [--locality LOCALITY] [--common-name COMMON_NAME]
17
+ HELP
18
+
19
+ def initialize(argv = ARGV)
20
+ @argv = argv
21
+ @options = {}
22
+ @opt_parser = OptionParser.new
23
+ configure_option_parser
24
+ @options.merge!(DEFAULT_OPTIONS)
25
+ parse_options!
26
+ end
27
+
28
+ def usage(msg = nil)
29
+ puts HELP_TEXT
30
+ puts "Error: #{msg}" if msg
31
+ exit 1
32
+ end
33
+
34
+ def call
35
+ ca_dir, passphrase, = @argv[0..1]
36
+
37
+ unless ca_dir && passphrase
38
+ puts "#{HELP_TEXT}"
39
+ puts ''
40
+ exit 1
41
+ end
42
+
43
+ FileUtils.mkdir_p(ca_dir)
44
+
45
+ cert, key = Fluent::CaGenerate.generate_ca_pair(@options)
46
+
47
+ key_data = key.export(OpenSSL::Cipher.new('aes256'), passphrase)
48
+ File.open(File.join(ca_dir, 'ca_key.pem'), 'w') do |file|
49
+ file.write key_data
50
+ end
51
+ File.open(File.join(ca_dir, 'ca_cert.pem'), 'w') do |file|
52
+ file.write cert.to_pem
53
+ end
54
+
55
+ puts "successfully generated: ca_key.pem, ca_cert.pem"
56
+ puts "copy and use ca_cert.pem to client(out_forward)"
57
+ end
58
+
59
+ def self.certificates_from_file(path)
60
+ data = File.read(path)
61
+ pattern = Regexp.compile('-+BEGIN CERTIFICATE-+\n(?:[^-]*\n)+-+END CERTIFICATE-+\n', Regexp::MULTILINE)
62
+ list = []
63
+ data.scan(pattern){|match| list << OpenSSL::X509::Certificate.new(match)}
64
+ list
65
+ end
66
+
67
+ def self.generate_ca_pair(opts={})
68
+ key = OpenSSL::PKey::RSA.generate(opts[:private_key_length])
69
+
70
+ issuer = subject = OpenSSL::X509::Name.new
71
+ subject.add_entry('C', opts[:cert_country])
72
+ subject.add_entry('ST', opts[:cert_state])
73
+ subject.add_entry('L', opts[:cert_locality])
74
+ subject.add_entry('CN', opts[:cert_common_name])
75
+
76
+ digest = OpenSSL::Digest::SHA256.new
77
+
78
+ cert = OpenSSL::X509::Certificate.new
79
+ cert.not_before = Time.at(0)
80
+ cert.not_after = Time.now + 5 * 365 * 86400 # 5 years after
81
+ cert.public_key = key
82
+ cert.serial = 1
83
+ cert.issuer = issuer
84
+ cert.subject = subject
85
+ cert.add_extension OpenSSL::X509::Extension.new('basicConstraints', OpenSSL::ASN1.Sequence([OpenSSL::ASN1::Boolean(true)]))
86
+ cert.sign(key, digest)
87
+
88
+ return cert, key
89
+ end
90
+
91
+ def self.generate_server_pair(opts={})
92
+ key = OpenSSL::PKey::RSA.generate(opts[:private_key_length])
93
+
94
+ ca_key = OpenSSL::PKey::read(File.read(opts[:ca_key_path]), opts[:ca_key_passphrase])
95
+ ca_cert = OpenSSL::X509::Certificate.new(File.read(opts[:ca_cert_path]))
96
+ issuer = ca_cert.issuer
97
+
98
+ subject = OpenSSL::X509::Name.new
99
+ subject.add_entry('C', opts[:country])
100
+ subject.add_entry('ST', opts[:state])
101
+ subject.add_entry('L', opts[:locality])
102
+ subject.add_entry('CN', opts[:common_name])
103
+
104
+ digest = OpenSSL::Digest::SHA256.new
105
+
106
+ cert = OpenSSL::X509::Certificate.new
107
+ cert.not_before = Time.at(0)
108
+ cert.not_after = Time.now + 5 * 365 * 86400 # 5 years after
109
+ cert.public_key = key
110
+ cert.serial = 2
111
+ cert.issuer = issuer
112
+ cert.subject = subject
113
+
114
+ cert.add_extension OpenSSL::X509::Extension.new('basicConstraints', OpenSSL::ASN1.Sequence([OpenSSL::ASN1::Boolean(false)]))
115
+ cert.add_extension OpenSSL::X509::Extension.new('nsCertType', 'server')
116
+
117
+ cert.sign ca_key, digest
118
+
119
+ return cert, key
120
+ end
121
+
122
+ def self.generate_self_signed_server_pair(opts={})
123
+ key = OpenSSL::PKey::RSA.generate(opts[:private_key_length])
124
+
125
+ issuer = subject = OpenSSL::X509::Name.new
126
+ subject.add_entry('C', opts[:country])
127
+ subject.add_entry('ST', opts[:state])
128
+ subject.add_entry('L', opts[:locality])
129
+ subject.add_entry('CN', opts[:common_name])
130
+
131
+ digest = OpenSSL::Digest::SHA256.new
132
+
133
+ cert = OpenSSL::X509::Certificate.new
134
+ cert.not_before = Time.at(0)
135
+ cert.not_after = Time.now + 5 * 365 * 86400 # 5 years after
136
+ cert.public_key = key
137
+ cert.serial = 1
138
+ cert.issuer = issuer
139
+ cert.subject = subject
140
+ cert.sign(key, digest)
141
+
142
+ return cert, key
143
+ end
144
+
145
+ private
146
+
147
+ def configure_option_parser
148
+ @opt_parser.banner = HELP_TEXT
149
+ @opt_parser.version = Fluent::VERSION
150
+
151
+ @opt_parser.on('--key-length [KEY_LENGTH]',
152
+ "configure key length. (default: #{DEFAULT_OPTIONS[:private_key_length]})") do |v|
153
+ @options[:private_key_length] = v.to_i
154
+ end
155
+
156
+ @opt_parser.on('--country [COUNTRY]',
157
+ "configure country. (default: #{DEFAULT_OPTIONS[:cert_country]})") do |v|
158
+ @options[:cert_country] = v.upcase
159
+ end
160
+
161
+ @opt_parser.on('--state [STATE]',
162
+ "configure state. (default: #{DEFAULT_OPTIONS[:cert_state]})") do |v|
163
+ @options[:cert_state] = v
164
+ end
165
+
166
+ @opt_parser.on('--locality [LOCALITY]',
167
+ "configure locality. (default: #{DEFAULT_OPTIONS[:cert_locality]})") do |v|
168
+ @options[:cert_locality] = v
169
+ end
170
+
171
+ @opt_parser.on('--common-name [COMMON_NAME]',
172
+ "configure common name (default: #{DEFAULT_OPTIONS[:cert_common_name]})") do |v|
173
+ @options[:cert_common_name] = v
174
+ end
175
+ end
176
+
177
+ def parse_options!
178
+ @opt_parser.parse!(@argv)
179
+ end
180
+ end
181
+ end
@@ -16,12 +16,16 @@
16
16
 
17
17
  require 'optparse'
18
18
  require 'fluent/env'
19
+ require 'fluent/time'
20
+ require 'fluent/msgpack_factory'
21
+ require 'fluent/version'
19
22
 
20
23
  op = OptionParser.new
21
24
 
22
25
  op.banner += " <tag>"
26
+ op.version = Fluent::VERSION
23
27
 
24
- port = Fluent::DEFAULT_LISTEN_PORT
28
+ port = 24224
25
29
  host = '127.0.0.1'
26
30
  unix = false
27
31
  socket_path = Fluent::DEFAULT_SOCKET_PATH
@@ -29,6 +33,8 @@ socket_path = Fluent::DEFAULT_SOCKET_PATH
29
33
  config_path = Fluent::DEFAULT_CONFIG_PATH
30
34
  format = 'json'
31
35
  message_key = 'message'
36
+ time_as_integer = false
37
+ retry_limit = 5
32
38
 
33
39
  op.on('-p', '--port PORT', "fluent tcp port (default: #{port})", Integer) {|i|
34
40
  port = i
@@ -66,7 +72,15 @@ op.on('--message-key KEY', "key field for none format (default: #{message_key})"
66
72
  message_key = s
67
73
  }
68
74
 
69
- (class << self; self; end).module_eval do
75
+ op.on('--time-as-integer', "Send time as integer for v0.12 or earlier", TrueClass) { |b|
76
+ time_as_integer = true
77
+ }
78
+
79
+ op.on('--retry-limit N', "Specify the number of retry limit (default: #{retry_limit})", Integer) {|n|
80
+ retry_limit = n
81
+ }
82
+
83
+ singleton_class.module_eval do
70
84
  define_method(:usage) do |msg|
71
85
  puts op.to_s
72
86
  puts "error: #{msg}" if msg
@@ -98,6 +112,8 @@ require 'msgpack'
98
112
  class Writer
99
113
  include MonitorMixin
100
114
 
115
+ RetryLimitError = Class.new(StandardError)
116
+
101
117
  class TimerThread
102
118
  def initialize(writer)
103
119
  @writer = writer
@@ -121,7 +137,7 @@ class Writer
121
137
  end
122
138
  end
123
139
 
124
- def initialize(tag, connector)
140
+ def initialize(tag, connector, time_as_integer: false, retry_limit: 5)
125
141
  @tag = tag
126
142
  @connector = connector
127
143
  @socket = false
@@ -133,7 +149,8 @@ class Writer
133
149
  @pending = []
134
150
  @pending_limit = 1024 # TODO
135
151
  @retry_wait = 1
136
- @retry_limit = 5 # TODO
152
+ @retry_limit = retry_limit
153
+ @time_as_integer = time_as_integer
137
154
 
138
155
  super()
139
156
  end
@@ -143,7 +160,9 @@ class Writer
143
160
  raise ArgumentError, "Input must be a map (got #{record.class})"
144
161
  end
145
162
 
146
- entry = [Time.now.to_i, record]
163
+ time = Fluent::EventTime.now
164
+ time = time.to_i if @time_as_integer
165
+ entry = [time, record]
147
166
  synchronize {
148
167
  unless write_impl([entry])
149
168
  # write failed
@@ -200,7 +219,8 @@ class Writer
200
219
  end
201
220
 
202
221
  begin
203
- socket.write [@tag, array].to_msgpack
222
+ packer = Fluent::MessagePackFactory.packer
223
+ socket.write packer.pack([@tag, array])
204
224
  socket.flush
205
225
  rescue
206
226
  $stderr.puts "write failed: #{$!}"
@@ -223,21 +243,24 @@ class Writer
223
243
  end
224
244
 
225
245
  def try_connect
226
- now = Time.now.to_i
227
-
228
- unless @error_history.empty?
229
- # wait before re-connecting
230
- wait = @retry_wait * (2 ** (@error_history.size-1))
231
- if now <= @socket_time + wait
232
- return false
246
+ begin
247
+ now = Time.now.to_i
248
+
249
+ unless @error_history.empty?
250
+ # wait before re-connecting
251
+ wait = 1 #@retry_wait * (2 ** (@error_history.size-1))
252
+ if now <= @socket_time + wait
253
+ sleep(wait)
254
+ try_connect
255
+ end
233
256
  end
234
- end
235
257
 
236
- begin
237
258
  @socket = @connector.call
238
259
  @error_history.clear
239
260
  return true
240
261
 
262
+ rescue RetryLimitError => ex
263
+ raise ex
241
264
  rescue
242
265
  $stderr.puts "connect failed: #{$!}"
243
266
  @error_history << $!
@@ -250,9 +273,10 @@ class Writer
250
273
  }
251
274
  @pending.clear
252
275
  @error_history.clear
276
+ raise RetryLimitError, "exceed retry limit"
277
+ else
278
+ retry
253
279
  end
254
-
255
- return false
256
280
  end
257
281
  end
258
282
 
@@ -272,7 +296,7 @@ else
272
296
  }
273
297
  end
274
298
 
275
- w = Writer.new(tag, connector)
299
+ w = Writer.new(tag, connector, time_as_integer: time_as_integer, retry_limit: retry_limit)
276
300
  w.start
277
301
 
278
302
  case format
@@ -34,7 +34,7 @@ op.on('-u', '--unix PATH', "use unix socket instead of tcp") {|b|
34
34
  unix = b
35
35
  }
36
36
 
37
- (class << self; self; end).module_eval do
37
+ singleton_class.module_eval do
38
38
  define_method(:usage) do |msg|
39
39
  puts op.to_s
40
40
  puts "error: #{msg}" if msg
@@ -62,13 +62,16 @@ end
62
62
 
63
63
  require 'fluent/log'
64
64
  require 'fluent/engine'
65
- require 'fluent/config'
66
65
  require 'fluent/system_config'
66
+ require 'serverengine'
67
67
 
68
- $log = Fluent::Log.new(STDERR, Fluent::Log::LEVEL_TRACE)
69
- conf = Fluent::Config.parse('', 'fluent-debug.conf', '', true)
70
- system_conf = Fluent::SystemConfig.create(conf)
71
- Fluent::Engine.init(system_conf)
68
+ include Fluent::SystemConfig::Mixin
69
+
70
+ dl_opts = {}
71
+ dl_opts[:log_level] = ServerEngine::DaemonLogger::TRACE
72
+ logger = ServerEngine::DaemonLogger.new(STDERR, dl_opts)
73
+ $log = Fluent::Log.new(logger)
74
+ Fluent::Engine.init(system_config)
72
75
 
73
76
  DRb::DRbObject.class_eval do
74
77
  undef_method :methods
@@ -88,13 +91,12 @@ include Fluent
88
91
 
89
92
  puts "Connected to #{uri}."
90
93
  puts "Usage:"
91
- puts " Engine.match('some.tag').output : get an output plugin instance"
92
- puts " Engine.sources[i] : get input plugin instances"
93
- puts " Plugin.load_plugin(type,name) : load plugin class (use this if you get DRb::DRbUnknown)"
94
+ puts " Fluent::Engine.root_agent.event_router.match('some.tag') : get an output plugin instance"
95
+ puts " Fluent::Engine.root_agent.inputs[i] : get input plugin instances"
96
+ puts " Fluent::Plugin::OUTPUT_REGISTRY.lookup(name) : load output plugin class (use this if you get DRb::DRbUnknown)"
94
97
  puts ""
95
98
 
96
99
  Encoding.default_internal = nil if Encoding.respond_to?(:default_internal)
97
100
 
98
101
  require 'irb'
99
102
  IRB.start
100
-