我已经设置了syslog-ng来拖尾文件并将每个新事件转发给python脚本,它将处理它。
我的syslog-ng.conf看起来像这样 -
source s_src {
file("/var/log/xyz.log" flags(no_parse);
};
destination d_dest {
program("python -u /home/user1/processlog.py" flush_lines(1) flags(no_multi_line));
};
log { source(s_src); destination(d_dest); };
processlog.py只包含
#!/usr/bin/python
import sys
f1 = open('success.txt', 'a')
while 0 < 1:
try:
line = sys.stdin.readline()
f1.write(line)
except Exception, e:
f = open('/tmp/error.txt','ab')
f.write(e)
f.close()
exit(0)
此脚本从命令行完美地运行。接受每个输入并写入success.txt。
Syslog-ng也会启动,但不会将事件转发给上面的python程序。它启动程序。
ps -ef| grep processlog
root 6242 6236 0 13:00 ? 00:00:00 /bin/sh -c python -u /home/user1/processlog.py
root 6244 6242 0 13:00 ? 00:00:00 python -u /home/user1/processlog.py
我也检查了所有权限。但是每当xyz.log中发生新事件时,它都不会被转发到python脚本,我正在通过写入success.txt进行测试
任何线索都非常感谢。
答案 0 :(得分:1)
尝试在启用调试消息的前台模式下运行syslog-ng
syslog-ng -Fedtv
也许您会获得有关程序目标无法获取消息的原因的信息。
顺便说一句,syslog-ng是否可能读取此文件一次?
在这种情况下,您应该删除persist文件(var / syslog-ng.persist)以强制syslog-ng从头开始读取此文件。