如何使用rsyslog ltrim功能?

如何使用rsyslog ltrim功能?

我想msg使用 rsyslog 修剪字段中的前导和尾随空格。我读到它有调用的函数rtrimltrim但我找不到任何关于如何在 RainierScript 中使用函数的解释。如果有人能展示这些功能的示例,我将非常感激。我当前的配置是这样的:

module(load="imudp")
input(type="imudp" port="514" ruleset="forward")

template(name="RFC5424_IP" type="string"
  string="<%PRI%>1 %timegenerated:::date-rfc3339% %fromhost-ip% %APP-NAME% %PROCID% %MSGID% %STRUCTURED-DATA% %msg%"
)

ruleset(name="forward") {
  action(type="omfwd"
    protocol="tcp"
    target="127.0.0.1"
    port="40514"
    Template="RFC5424_IP"
    TCP_Framing="octet-counted"
  )
}

答案1

您可以使用set它在 json 值树的顶部创建一个新的 json 变量(通常具有相同的名称),然后在模板中引用该变量,如下所示。

template(name="RFC5424_IP" type="string"
  string="... %$!msg%"
)

ruleset(name="forward") {
  set $!msg = rtrim(ltrim($msg));
  action(type="omfwd"
     ...
  )
}

不要忘记终止分号 (;)!看可变属性类型

相关内容