0

我有一台机器可以修改 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 服务器脚本

5144是我通过脚本监听的 syslog-ng 端口

4

1 回答 1

2

除了“文件”之外,您是否考虑过使用“程序”指令并将日志直接传送到您的脚本而不是涉及网络?

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 文档包含更多信息。

于 2012-10-10T11:48:42.880 回答