Syslog-ng没有将输出刷新到python程序

时间:2015-09-07 07:44:19

标签: python syslog-ng

我已经设置了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进行测试

任何线索都非常感谢。

1 个答案:

答案 0 :(得分:1)

尝试在启用调试消息的前台模式下运行syslog-ng

syslog-ng -Fedtv

也许您会获得有关程序目标无法获取消息的原因的信息。

顺便说一句,syslog-ng是否可能读取此文件一次?

在这种情况下,您应该删除persist文件(var / syslog-ng.persist)以强制syslog-ng从头开始读取此文件。