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

Rsyslog截断超过48字符的App-Names配置不生效问题排查

配置未生效的可能原因

  • 未校验配置语法、未重启服务
    修改配置后首先执行rsyslogd -N1校验配置是否存在语法错误,确认无报错后必须重启rsyslog服务(对应命令systemctl restart rsyslog)才能使新规则生效,部分场景下reload操作不会加载新增的变量和模板规则。
  • Rsyslog版本不兼容语法
    你用到的set变量赋值、新式template写法属于RainerScript语法,仅在rsyslog 7.5及以上版本支持,如果系统安装的是更早的旧版本,这类配置会被直接忽略。
  • set变量的执行时机错误
    当前你把set $.APPNAME47 = substring($app-name, 0, 47);放在全局配置段,该语句只会在rsyslog进程启动时执行一次,不会对每一条收到的日志单独计算变量值。正确做法是无需单独声明变量,直接在template内调用substring函数即可,把模板中的%$.APPNAME47%替换为%substring($app-name,0,47)%即可。
  • 日志格式不匹配导致属性取值为空
    $app-name是RFC5424格式日志的专属属性,如果你收到的是旧的RFC3164(BSD syslog)格式的日志,$app-name属性会为空,此时你应该替换为$programname属性来获取程序名再做截断。
  • 截断长度参数不符合预期
    substring函数的第三个参数为截取长度,你当前配置的参数是47,最终得到的App-Names最长为47字符,如果要保留48字符可以将参数调整为48。

修正后的参考配置

$ActionQueueType LinkedList
$ActionQueueFileName srvrfwd
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
$ModLoad imudp #loads the udp module
$UDPServerAddress XX.XX.YY.ZZ
$UDPServerRun 514

template(name="trimmer" type="string"
     string="<%PRI%>1 %TIMESTAMP:::date-rfc3339% %HOSTNAME% %substring($programname,0,48)% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%\n")

*.* @127.0.0.1:6514;trimmer

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:06:02