logstash 配位文件加入转义设置,报错问题解决

发布时间 2023-06-07 11:39:17作者: 南方卖菜

 

# 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` 转义为一个字符,并将其嵌入到格式化字符串中。