【发布时间】:2011-07-04 08:56:03
【问题描述】:
我正在尝试使用 apache 的 CustomLog 指令将日志行传递到 python 脚本(应该登录到 django 后端)。我在虚拟主机中使用以下自定义日志行:
CustomLog "|/usr/bin/python -u /home/rolf/feedmemore/myproject/logger.py > /tmp/out.txt 2> /tmp/err.txt" combined
这是 logger.py 中的主循环:
c = sys.stdin.read(1)
line = ""
while True:
if c:
line += c
if ord(c) == 4:
break
else:
sys.stderr.write("huh?\n")
if c == '\n':
print line
logline(line.rstrip('\n'))
line = ""
c = sys.stdin.read(1)
起初我的信念是,如果我使用 read(1) 从 apache 收到“”,那么程序应该退出。但是,无论任何服务器活动如何,apache 都会不断抛出 ""。 /tmp/err.txt 很快被“嗯?”填满。这是怎么回事?
我的日志记录程序应该如何知道输入何时完成并应该退出?我已尝试检查 0x4 (EOT),但这不起作用。
我的第一次尝试是使用“readline()”,但同样失败了。
关于如何在 django 中集中记录请求的任何其他建议也会有所帮助。
【问题讨论】:
-
忘了说:我使用的是 Python 2.6.6 和 Apache/2.2.16 (Debian)
标签: python django apache logging apache2