I was recently trying to change the logging from the default to INFO
for sqlalchemy.engine.

This works great - so long as I do it at startup, before I make any
connections, etc, however once I've created my engine instance I don't
seem to be able to change the logging level, at least not in the
expected/obvious way.

sess = make_session()
some_obj = sess.query(....)
logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)
sess.refresh(some_obj)

I tracked this to the _should_log_info attribute on the engine instance itself.
Thus, I would be able to change the level to anything except INFO or
DEBUG and get the behavior I expect, but being unable to use INFO or
DEBUG (unless set initially) threw me for a bit.

I assume that the purpose of this is to save performance?
I note that the way much of the logging (esp. in pool.py) seems to be
written is like this:

somelogger.log("String ..." % (var1,var2,var3))

and of course, regardless of the loglevel specified this always
interpolates the variables - a fairly significant performance penalty
for sure.

Shouldn't the style be:

somelogger("String ...", var1,var2,var3)

which prevents interpolation unless the loglevel is actually
sufficient? Would that not obviate the need for _should_log_info (and
_should_log_debug) ??

I'm willing to supply a patch that changes the format of the calls to
the logging system if that's useful.

-- 
Jon

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to