我有一台服务器,其中有一堆进程在运行时写入日志文件。我需要使客户端主机能够以近乎实时的方式获取服务器端日志文件的副本。有没有比简单地将 tail 与 netcat 结合起来更好的方法?
我正在考虑在服务器端使用 tail 和 netcat 通过单个连接传输多个日志文件:
tail -F *.log | nc -lk -p 31377
虽然客户端会将日志解复用并将其写入文件:
nc serverhost 31377 | demultiplexer
其中解复用器只是围绕 sed 构建,从服务器端通过 tail 插入的分隔符计算目标文件名:
sed -e 's/==> \(.*\) <==/\1/'
答案1
尝试
tail -f /path/to/logfile.log | xargs -l logger -p local8.info
xargs -l
将逐行阅读。- 不过,您必须配置 syslog.conf 才能进行广播。 (将
local8
和替换info
为适当的值)