将标准输入和日志文件合并到标准输出

将标准输入和日志文件合并到标准输出

我正在寻找可以执行以下操作的命令或 bash 脚本:

超级合并图像

也就是说:我想要一个“超级合并”来将标准输入流与连续写入日志文件(此示例中为 var/log/messages)的内容合并。结果应写入标准输出。

原因是为了扫描某些错误消息,这些消息可以写入日志文件和标准输出。

例如:

my_strange_program /var/log/messages | supermerge /var/log/messages | my_log_scanner
  • my_strange_program 可以将错误发送到标准输出和日志文件。
  • supermerge - 我正在寻找的脚本
  • my_log_scanner 一个扫描错误消息的程序(我已经有了这个)

笔记:日志文件可以轮换:messages、messages.1、messages.2 等等。因此不可能只对tail文件进行重命名。

答案1

尝试这个:

my_strange_program /var/log/messages > /tmp/tmpfile | tail -F /var/log/messages /tmp/tmpfile | my_log_scanner

答案2

有一个名为 multitee 的工具。听起来像是你要找的东西。我试图弄清楚它是如何工作的,但没有结果。

另一个想法是使用多尾,如果它足以在屏幕上进行合并

multitail -f /var/log/syslog -L "ping 4.2.2.1" 

相关内容