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

Rsyslog配置Tomcat异常日志聚合失败,正则语法报错求助

Rsyslog配置修复:Tomcat异常日志整合与正则语法错误解决

问题根源解析

  • 正则匹配语法错误:你的rsyslog版本(8.2102.0-5.el8)中,条件判断的正则匹配操作符应为matches,而非regex,这是配置验证报错的直接原因。
  • 多行日志未整合:默认imfile模块逐行读取日志,导致$msg仅包含单行内容,无法匹配多行异常栈的正则表达式,这也是过滤规则失效的核心原因。

修复步骤与配置示例

1. 配置imfile整合多行异常日志

通过multiLineStartRegex定义异常日志的起始行,multiLineEndRegex定义结束行,让rsyslog将整个异常栈合并为单条消息。

2. 修正正则匹配语法

将regex替换为rsyslog支持的matches操作符,并调整正则表达式适配合并后的多行消息。

最终修正后的配置

module(load="imfile" PollingInterval="10") # 仅需加载一次

# 配置imfile整合多行Tomcat异常日志
input(type="imfile"
      File="/tomcat/logs/catalina.out"
      Tag="catalina"
      Severity="info"
      Facility="local1"
      multiLineStartRegex="^org\.apache\.jasper\.JasperException:"
      multiLineEndRegex="^\.\.\. \d+ more$"
)

# 过滤JasperException+NullPointerException的异常栈并转发
if $msg matches "(?s)org\.apache\.jasper\.JasperException:.*?Caused by: java\.lang\.NullPointerException.*" then {
    action(type="omfwd" 
           target="192.168.0.1" 
           port="514" 
           protocol="tcp" 
           facility="local1" 
           severity="err"
    )
}

# 转发其余local1设施的日志
local1.* @192.168.0.1:514

关键说明

  • multiLineStartRegex="^org\.apache\.jasper\.JasperException:":匹配异常栈的起始行,触发多行合并。
  • multiLineEndRegex="^\.\.\. \d+ more$":匹配异常栈的结尾行(如... 40 more),结束多行合并。
  • (?s):正则的DOTALL模式,让.匹配包括换行符在内的所有字符,确保能匹配多行内容。
  • 替换regex为matches:符合rsyslog v8.x版本的条件判断语法规范,解决配置验证报错。

内容的提问来源于stack exchange,提问作者John Paul Attard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 12:28:14