如何通过tcp接收带有线路流的syslog-ng日志?

时间:2012-10-10 10:43:57

标签: python linux logging stream syslog-ng

我有一台机器来修复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端口,我通过我的脚本

来监听它

1 个答案:

答案 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包含更多信息。