You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LogStash 8.2.0如何编写GROK Pattern提取日志线程名称

GROK提取Logback日志线程字段实现方案

现有规则问题

你当前编写的规则中\[%{LOGLEVEL:loglevel}.*]段使用了贪婪匹配符.*,会直接吞掉日志级别字段后方的所有内容直到本行最后一个]字符,导致后续的线程名字段没有匹配空间,这是无法提取线程名的核心原因。
另外你的Logback配置中日志级别使用了%-5level占位符,输出时会自动在短级别(比如WARN、INFO)后补空格凑够5位字符宽度,匹配时需要专门处理这部分冗余空格。

可用匹配规则

直接替换为以下完整GROK规则即可提取包括线程名在内的全量字段:

%{DATE_EU:date} %{TIME:time} %{ISO8601_TIMEZONE:zone} \[%{LOGLEVEL:loglevel}\s*\] \[%{DATA:thread}\] %{JAVACLASS:logger} - %{GREEDYDATA:log_message}

规则说明

  • \[%{LOGLEVEL:loglevel}\s*\]:匹配方括号包裹的日志级别,\s*用来吃掉级别后自动补的空格,遇到右方括号立刻停止匹配,不会越界
  • \[%{DATA:thread}\]:匹配紧随其后的方括号包裹内容,提取为thread字段,对你给出的示例日志会提取到值main
  • 后续的%{JAVACLASS:logger}和%{GREEDYDATA:log_message}是可选匹配项,分别提取日志打印类名和日志正文,不需要可以直接删除,不影响前面字段的提取结果

验证结果

对你提供的示例日志行,该规则提取结果如下:

  • date: 07/06/2022
  • time: 14:37:41.471
  • zone: +0530
  • loglevel: WARN
  • thread: main
  • logger: com.cmt.trial.logging.LoggingTrial
  • log_message: Trying to log an warn

内容的提问来源于stack exchange,提问作者hell_storm2004

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 04:27:13