![禁用 Syslog-ng 日志中显示的进程 ID](https://linux22.com/image/741972/%E7%A6%81%E7%94%A8%20Syslog-ng%20%E6%97%A5%E5%BF%97%E4%B8%AD%E6%98%BE%E7%A4%BA%E7%9A%84%E8%BF%9B%E7%A8%8B%20ID.png)
我配置了系统日志工具(版本 3.21.1),发现日志格式如下。
Aug 26 12:59:28 xyz74hd.com radiusd[20142]: 92djvd4654654164nadskj795234dc Reason: pldap: Forind credentials incorrect: Invalid credentials possible
我不需要 Process-ID(在上面的日志中)[20142]) 在我的日志中。因此所需的 syslog 格式应如下:
Aug 26 12:59:28 xyz74hd.com radiusd: 92djvd4654654164nadskj795234dc Reason: pldap: Forind credentials incorrect: Invalid credentials possible
之前我用的是CentOS6使用较旧的 syslog-ng 版本(3.2.5)但当我部署CentOS7使用最新的 syslog-ng 版本之一(3.21.1)时发生错误。(syslog-ng 配置几乎相同)
在我的新部署中,日志中出现了额外的 Process-ID 字段,导致日志解析器行为异常。我无法更改代码。
在 syslog-ng 级别上是否有任何解决方案,以便我可以从日志中删除这些进程 ID?
答案1
您有多种方法可以删除进程 ID:
您可以为目标创建一个模板以使用自定义输出格式,例如:
file("/var/log/messages" template("$DATE $HOST $PROGRAM: $MESSAGE\n"))
您可以在目的地之前添加重写规则,在那里取消设置 PID:
rewrite { unset(value("PID")); };
或者
rewrite { set("" value("PID")); };