Re: [Sqlalchemy-tickets] [sqlalchemy] #1926: Patch for letting multiple engines and pools use a sin
Brought to you by:
zzzeek
From: sqlalchemy <mi...@zz...> - 2010-11-17 23:07:34
|
#1926: Patch for letting multiple engines and pools use a single stdlib logger each -------------------------+-------------------------------------------------- Reporter: guest | Owner: zzzeek Type: enhancement | Status: new Priority: medium | Milestone: 0.7.0 Component: engine | Severity: major - 1-3 hours Keywords: | Status_field: in queue -------------------------+-------------------------------------------------- Comment(by guest): Replying to [comment:3 zzzeek]: > I have a modified version of the patch forthcoming that solves the abovementioned issue. I now see that your patch relies upon calling the publically undocumented logger._log(). Is this method safe to use? I.e. good in Python 3K, etc. ? should Python logging get a new method "log_internal()" or something like that ? It should be safe to use {{{_log()}}}. It's not officially documented because I don't think most users will need to know about it or override it. It's only in this patch because my original implementation of {{{LoggerAdapter}}} goofed in the reusability department; I couldn't usefully subclass it to deal with this use case, even though it was meant for this sort of scenario :-( So I made a new implementation of {{{LoggerAdapter}}} which will go into Python3.2, and as I had no choice, I copied it into the patch as {{{InstanceLogger}}}. If I hadn't goofed originally, {{{InstanceLogger}}} would just subclass {{{LoggerAdapter}}} and override {{{getEffectiveLevel()}}}. (At some future point where you drop support for Pythons older than 3.2, you can change the implementation to do just this, and the {{{_log()}}} call will disappear from SQLAlchemy's codebase.) The improved {{{LoggerAdapter}}} is also available in an external {{{logutils}}} project which brings recent logging features to older Python versions. This of course uses {{{_log()}}} in the same way; so I don't intend changing {{{_log()}}} in any way which causes existing code to break. Since the original release of logging, the only changes to {{{_log()}}} have been the addition of the optional ''extra'' keyword parameter, and very recently (for 3.2) the optional ''stack_info'' keyword parameter. -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1926#comment:5> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |