【发布时间】:2021-08-21 15:25:31
【问题描述】:
我的日志
2021-08-19 15:43:55,122 INFO c.t.i.c.ClassA - log message Service Name=Service-OCR Content ID=ABC.xml Category=SUCCESS Timestamp=2021-08-19T15:43:55.122292244 Message=The response has been received. Unit Name=N/A
2021-08-19 15:43:55,122 ERROR c.t.i.c.ClassB - log message Service Name=Service-OCR Engine Content ID=ABC.xml Category=ERROR Timestamp=2021-08-19T15:43:55.122292244 Message=The response has been received. Unit Name=TM
我的logstash.conf 是
input {
tcp {
port => 12201
codec => json_lines
}
}
filter {
grok {
patterns_dir => ["./patterns"]
match => {
'message' => '%{TIMESTAMP_ISO8601} %{LOGLEVEL:level} %{STRING} - \"log message \"Service Name=\"%{STRING} \"Content ID=\"%{STRING} \"Category=\"%{STRING} \"Timestamp=\"%{TIMESTAMP_ISO8601} \"Message=\"%{STRING} \"Unit Name=\"%{STRING}'
}
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "logstash"
}
}
我知道 STRING 不在 grok-filters 中,这就是我定义客户过滤器的原因。
STRING ^[a-zA-Z0-9 !@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]{1,}$
我假设无论我在哪里使用 STRING 都可能包含特殊字符、空格、数字。就像 Java 中的字符串一样。
但我仍然无法通过此过滤我的日志。有什么帮助吗?
【问题讨论】:
标签: logstash logstash-grok logstash-configuration