我有一台机器来修复syslog-ng的日志;
编辑配置文件以将日志写入本地文件/data/logs/access.log
destination d_nginx_video { file("/data/logs/access.log" create_dirs(yes) template("$PROGRAM $MESSAGE\n"));};
然后我想将日志文件发送到redis
队列,我可以让我的日志使用一些处理
但我需要首先阅读日志文件然后将日志放到redis
所以我使用tail -F /data/logs/access.log|python process put to redis queue
这是一个不好的方式
我想运行tcp服务器来接收日志文件以及如何配置syslog-ng
我的tcp服务器脚本是tcp server script
5144
是syslog-ng端口,我通过我的脚本
答案 0 :(得分:2)
除了“文件”之外,您是否考虑过使用“program”指令并直接将日志传递给您的脚本而不是涉及网络?
destination d_nginx_video { program("/path/to/python/script arg arg arg"
template("$PROGRAM $MESSAGE\n"));
file("/data/logs/access.log" create_dirs(yes)
template("$PROGRAM $MESSAGE\n")); };
我不是一个syslog-ng专家,但这似乎与你当前的方法非常相似,只是它保持脚本运行并不断处理syslog守护进程内的日志。 syslog-ng documentation包含更多信息。