私は、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 への書き込みでテストしています。
どんなリードも高く評価されます。