05-11-07 12:12 PM
Make sys.stdout/sys.stderr log properly to Apache error logs.
--------------------------------------------------------------
Key: MODPYTHON-223
URL: https://issues.apache.org/jira/browse/MODPYTHON-223
Project: mod_python
Issue Type: New Feature
Components: core
Affects Versions: 3.3.1
Reporter: Graham Dumpleton
When sys.stderr or sys.stdout are written to directly, or when the 'print' s
tatement is used without a target file object, any text output will make it
into the Apache error log files, but it will only get there after a flush ha
s been performed on stdout/
stderr. Most of the time the streams will only be flushed when Apache is bei
ng shutdown with the result being that the output is far removed in the log
file from any other messages that may have been logged at the same time usin
g the normal Apache error l
ogging functions. Further, anything output via stdout/stderr does not have a
ssociated with it the error log prefix giving the time the output was genera
ted.
All this can be improved by replacing sys.stderr and sys.stdout with custom
Python objects which buffer any output and flushing it through to the Apache
error log using the proper ap_log_error() function after each newline is en
countered. This will mean t
hat output appears straight away as soon as newline sent and output will be
prefixed with date/time string.
Do note though that the output cannot be associated with a specific virtual
host and thus would go to the main Apache error log file even if each virtua
l host has its own log file. This is the same as now though when sys.stderr
and sys.stdout are used.
[ Post a follow-up to this message ]
|