Graham Dumpleton ha scritto: > On 21/12/2007, Chris Withers <[EMAIL PROTECTED]> wrote: >> Manlio Perillo wrote: > [...] >>> In mod_wsgi for nginx I now redirect sys.stderr to server log file (as >>> suggested by Graham). >> I've never really understood this desire to do *anything* with >> sys.stderr. Writing to sys.stderr seems a very odd thing for any web >> component to use, especially as python now has a fantastic logging package. > > I only ever suggested that sys.stderr be directed to the web server > log file as a fallback to cope with third party Python modules which > use it directly, or where the logging module defaults to outputing it > there. >
Right. >>> However there are some problems. >>> The log object has a fixed error level (NGX_LOG_ERR); >>> this means that every message logged using this object will have this >>> error level, even if I do, as example: >>> log.info('just an info message') >> I'm missing the relationship between this and python's logging package. >> I'll note that the point you raise about why using sys.stderr for >> logging sucks are things I agree with ;-) > > As I believe I have said before, I disagree with how you The "you" is "me", I presume :) > are trying to > make logging module output simply go to sys.stderr. If you want to > preserve the concept of logging levels, then expose the internal web > server logging function, including it accepting its concept of log > level, and write a log handler for the logging module that uses it > instead. > This is what I plan to do, in future. But there is a problem. Here is how logging.info is implemented: def info(self, msg, *args, **kwargs): if self.manager.disable >= INFO: return if INFO >= self.getEffectiveLevel(): apply(self._log, (INFO, msg, args), kwargs) As I can can see, logging level comparison is done in the high level functions. The problem is that, in nginx, more sever errors have low integer values; in the logging module it is the contrary. So, I'm not sure that I can just implement a logging handler... > I can't get to the code right now, but have done exactly this with > Apache, where one can install a custom Apache log handler that > internally uses a SWIG'd binding for apache.http_log.ap_log_error(). > I will give it a look, thanks. > [...] Manlio Perillo _______________________________________________ Web-SIG mailing list Web-SIG@python.org Web SIG: http://www.python.org/sigs/web-sig Unsubscribe: http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com