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

如何用正则表达式在syslog-ng中排除含不可读字符的日志?

日志过滤正则表达式方案

核心思路

保留以标准日期开头的有效日志,排除包含不可读乱码的行。

正则方案

1. 匹配有效日志行(直接保留符合规则的行)

针对示例中Aug 18,etc message...这类以英文月份缩写开头的日志,可用以下正则匹配有效行:

^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d{1,2},.*

如果日志日期格式是Aug 18 12:34:56这类带时间的,调整为:

^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d{1,2}\s+\d{2}:\d{2}:\d{2}.*

2. 排除乱码行(过滤含不可读字符的行)

乱码行通常包含大量非ASCII可打印字符,用以下正则匹配这类行并排除:

[^\x20-\x7E]+

其中\x20-\x7E覆盖所有ASCII可打印字符(空格到波浪号),[^...]表示匹配不在此范围内的字符。

结合规则格式的最终写法

按照你期望的规则结构,可组合为:

{not(match("[^\x20-\x7E]+")) and match("^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d{1,2},.*")};

说明

  • not(match("[^\x20-\x7E]+")):排除任何包含不可读非打印字符的行
  • match("^(Jan|...|Dec)\s+\d{1,2},.*"):确保只保留以合法日期开头的有效日志

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:03:29