在我的系统中,我正在运行rsyslog守护进程。 我试图configurationsyslog.conf发送所有authentication邮件到一个特定的文件使用该行
auth.*;authpriv.* /var/log/AuthLogs
它的工作。 现在我想把这些消息发送给一个进程。 该进程将准备好捕获日志。 以前我使用的是syslogd守护进程。 在这我能够发送日志使用下面的行
auth.*;authpriv.* |exec /usr/bin/read.exe
但是rsyslogd不能正常工作。 有没有人有任何线索如何做到这一点?
更新 :特别是这个问题发生在python脚本ex代码中:
#!/usr/local/bin/python import sys import fcntl, os message = sys.stdin.readline() # Read what's waiting, in one go if not message: print "nothing in message\n" fd = open('/tmp/testrsyslogomoutput1.txt', 'a') fd.write("Receiving log message : \n%s\n" % (message)) fd.close()
这个python代码,我想通过rsyslog调用。
我检查了Google,发现了这个答案 。 我查过例子,发现你的情况,你应该改变你的string:
auth.*;authpriv.* ^/usr/bin/read.exe
更新:我创build了简单的脚本,只包含echo $1 >> /var/log/tt.log 。 在此之后,我在日志文件中看到传递给此脚本的所有消息。
取决于是否要为匹配消息的每个实例调用一个外部程序(在这种情况下,“^ command”function应该适用于获取日志消息作为参数)。
如果你想把所有匹配的消息传递给长时间运行的程序的标准input,那么我想你需要rsyslog的“omprog”function。 有关完整的详细信息,请参阅http://www.rsyslog.com/doc/v8-stable/configuration/modules/omprog.html 。 示例configuration(从该页面)…
module(load="omprog") action(type="omprog" binary="/pathto/omprog.py --parm1=\"value 1\" --parm2=\"value2\"" template="RSYSLOG_TraditionalFileFormat")