【发布时间】:2011-08-18 15:52:23
【问题描述】:
通过 Apache 将二进制数据记录到标准输出时出现问题。
配置日志记录后,我尝试记录字符串'\x31\x00':
logging.getLogger().info('\x31\x00')
如果我使用 python 控制台一切顺利 - 我看到了预期:
2011-05-01 22:21:27,430 INFO [test_logging:9][test_logging] 1
但如果我通过 Apache 和 mod_wsgi 使用日志记录,我会得到回溯:
Traceback (most recent call last):
File "/usr/local/lib/python2.6/logging/__init__.py", line 789, in emit
stream.write(fs % msg) TypeError: write() argument 1 must be string without null bytes, not str
错误在哪里?我应该在哪里挖掘?
我的日志配置:
[loggers]
keys=root
[formatters]
keys=stdoutFormatter
[handlers]
keys=stdoutHandler
[logger_root]
level=NOTSET
handlers=stdoutHandler
[handler_stdoutHandler]
class=StreamHandler
formatter=stdoutFormatter
args=(sys.stdout,)
[formatter_stdoutFormatter]
format=%(asctime)s %(levelname)s [%(module)s:%(lineno)d][%(funcName)s] %(message)s
Apache 2.2.16 版
Python 版本 2.6.4
Mod_wsgi 2.8
【问题讨论】: