RSYSLOG的正则表达式无论使用哪种表达式,始终没有匹配项

编程语言 2026-07-09

我在尝试使用rsyslog的正则表达式功能,但没有任何结果。

这里是一条示例日志行

May 19 08:52:14 - ansible-exploitation-6cbcf9cb87ty-j8cqw - local0.info - ansible message bla bla bla

我想要做的是:
我想用ansible-exploitation来为日志文件命名
ansible-exploitation只是一个示例。将会有大量的Pod实例向rsyslog Pod发送rsyslog消息。
我知道有更好的方案来获取Kubernetes的 Pod日志,但现在需要让这个方案跑起来

我显然先使用了rsyslog官方工具页(rsyslog.com/regex)

有用的rsyslog信息:

Version: 8.2512.0 aka 2025.12  
PLATFORM: x86_64-alpine-linux  
FEATURE_REGEXP: Yes

环境:
Kubernetes集群

当前的rsyslog模板

definition: (successfuly tested on rsyslog.com/regex)  
template(name="SimpleFormat" type="string" string="%timegenerated% - %hostname:R,ERE,0,DFLT:\"[a-z]+-[a-z]+\"--end% - %pri-text% - %syslogtag% - %msg%\n")  
$ActionFileDefaultTemplate SimpleFormat  
$template dkct-rsyslog,"/var/preprod/logs/dkct-rsyslog-%HOSTNAME:R,ERE,0,DFLT:\"[a-z]+-[a-z]+\"--end%.log"

最后一次尝试,我使用 \".+\",但仍然得到 没有匹配 的结果
在此先感谢你可能提供的任何帮助。

解决方案

有人给了我解决方案:
去掉引号(因此不要相信官方的rsyslog工具)
下面是正确的语法:

template(name="SimpleFormat" type="string" string="%timegenerated% - %hostname:R,ERE,0,DFLT:[a-z]+-[a-z]+--end% - %pri-text% - %syslogtag% - %msg%\n")  
$ActionFileDefaultTemplate SimpleFormat  
$template dkct-rsyslog,"/var/preprod/logs/dkct-rsyslog-%HOSTNAME:R,ERE,0,DFLT:[a-z]+-[a-z]+--end%.log"
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章