![如何用本地时间戳替换 rsyslog 服务器上收到的消息的时间戳?](https://linux22.com/image/174033/%E5%A6%82%E4%BD%95%E7%94%A8%E6%9C%AC%E5%9C%B0%E6%97%B6%E9%97%B4%E6%88%B3%E6%9B%BF%E6%8D%A2%20rsyslog%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%94%B6%E5%88%B0%E7%9A%84%E6%B6%88%E6%81%AF%E7%9A%84%E6%97%B6%E9%97%B4%E6%88%B3%EF%BC%9F.png)
我有一个将其日志转发到 rsyslog 服务器的路由器,我想配置 rsyslog 服务器以将时间戳替换为本地时间戳。消息格式如下所示:
Jan 1 00:00:47 192.168.1.254 kernel: br0: port 1(eth0) entered forwarding state
对于来自该路由器 (192.168.1.254) 的所有消息执行此操作的最佳方法是什么?
答案1
处理此问题的最简单方法是编写一个模板,该模板是您已使用的模板的副本,并将属性更改timestamp
为该timegenerated
属性。例如,假设您正在写入文件并使用默认值RSYSLOG_TraditionalFileFormat
模板,然后您可以创建myFileFormat
、测试 IP 地址并输入您的匹配规则。在旧格式中,规则使用日志文件名,后跟;
模板名称:
template(name="myFileFormat" type="string" string="%timegenerated% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp% %msg:::drop-last-lf%\n")
if $fromhost-ip == "192.168.1.254" then {
*.* /my/logfile;myFileFormat
stop
}