我有一个 Tomato 路由器,它能够将其日志发送到外部服务器。syslog
显然是最佳选择。因此,我在我的 Linux 服务器syslogd
( syslogd -r
) 上启用了远程日志记录,并且可以看到所有日志/var/log/syslog
。我想要做的是获取来自路由器 IP (10.0.0.1) 的所有内容并将其转移到自己的文件中,以/var/log/tomato
避免外部日志污染我的系统日志。
我找不到任何人这样做的例子。我唯一的解决方案是编写一个脚本,删除其中的任何行,/var/log/syslog
并将10.0.0.1
该行放入其中/var/log/tomato
,然后让脚本作为 cron 作业运行,但这似乎不必要地混乱。
一定有更好的方法。
编辑:
除非有人知道有解决方案,否则syslog
在更深入地阅读手册页后,我 95% 肯定不支持此操作。所以我需要迁移syslog-ng
或制作一个使用 cron 运行的疯狂脚本。
答案1
我们在办公室使用 syslog-ng,事实上,您可以根据各种不同的标准将 syslog 的输出分离到不同的输出文件中。在 syslog-ng 中,您基本上分别定义源、标准和目标。然后,您可以制定规则,将不同的组件粘合在一起,从而制定出由 syslog-ng 执行的实际规则。
据我所知,syslog-ng 似乎是事实上的标准。我们还使用基于 PHP 的 syslog 阅读器,该阅读器通过 Apache 在网络上工作。然后,您可以阅读这些 syslog,使用自己的标准来查看日志内容,这种方式可能比著名的“tail -f”命令更简单。这就是所谓的 PHPlogcon。用 Google 搜索这个名字,您应该很容易找到它。
答案2
使用 iptables 将流量从路由器 ip 转移到 Linux 主机上的某个不同端口。
在另一个端口(即 5514)上运行另一个 syslog 服务器实例并写入。到您选择的文件。