logstash 配置文件加入转义设置,报错问题解决
# mysql文件, 也可以直接写SQL语句在此处,如下:
statement_filepath => "E:\es\logstash-7.17.0-windows-x86_64\logstash-7.17.0\mysql\user_sql\xxx.sql"
问题其他的jdbc 都不报错,就他报错,找不到路径,原因是斜杠被转义了,导致找不到文件路径。
解决如下:
多加个斜杠,
或者直接在logstash.yml配置文件中去调 config.support_escapes: true 这个配置,没用!
# mysql文件, 也可以直接写SQL语句在此处,如下:
statement_filepath => "E:\\es\\logstash-7.17.0-windows-x86_64\\logstash-7.17.0\\mysql\\user_sql\\xxx.sql"
logstash 加上这句config.support_escapes: true运行报错 ,不加就能正常,是什么原因
1 `config.support_escapes: true` 是一个 Logstash 配置选项,它允许您在配置文件中使用反斜杠字符 `\` 作为转义符。在该选项被启用时,您可以在配置文件中使用 `\n` 表示换行符,`\t` 表示制表符等等。 2 3 如果您在配置文件中使用 `config.support_escapes: true`,但是 Logstash 运行期间出现了错误,可能是因为您在配置文件中使用了无效的转义序列,导致 Logstash 无法正确解析配置文件。 4 5 例如,如果您在配置文件中使用以下语句: 6 7 ``` 8 output { 9 stdout { codec => line { format => "%{message}\n" } } 10 } 11 ``` 12 13 在该配置文件中,我们使用了 `\n` 作为格式化字符串中的换行符。如果您同时在配置文件开头使用了 `config.support_escapes: true`,那么在运行 Logstash 时,可能会出现以下错误: 14 15 ``` 16 [ERROR][logstash.agent ] Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:main, :exception=>"RegexpError", :message=>"unmatched close parenthesis: /%{message}\n/", :backtrace=>["org/jruby/RubyRegexp.java:1379:in `initialize'", "org/jruby/RubyRegexp.java:1379:in `initialize'", "org/jruby/RubyRegexp.java:1306:in `new'", "org/jruby/RubyRegexp.java:1306:in `compile'", "org/jruby/RubyRegexp.java:547:in `initialize'", "org/jruby/RubyString.java:5022:in `scan'", "..."]} 17 ``` 18 19 这个错误提示显示了未匹配的括号。这是因为在 `format` 属性中,Logstash 已经将 `\n` 解析为一个换行符,而不是一个转义字符,而且遗留下来的括号没有被正确解析,导致了错误。 20 21 因此,如果您必须使用 `config.support_escapes: true` 选项,那么请确保在使用转义字符时,将其包含在双引号字符串中,并正确使用转义序列。例如,我们可以使用以下方式来表示输出中的换行符: 22 23 ``` 24 output { 25 stdout { codec => line { format => "%{message}\\n" } } 26 } 27 ``` 28 29 在这个示例中,我们使用双反斜杠 `\\n` 表示输出中的换行符。这样会确保 Logstash 将 `\n` 转义为一个字符,并将其嵌入到格式化字符串中。