From: Mike Bayer Date: Sun, 3 Jan 2010 18:42:23 +0000 (+0000) Subject: - added a refresh logger step to the nose plugin so that SQLA class loggers get corre... X-Git-Tag: rel_0_6beta1~98 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cae83dd7ea9b847961b4df3227bc829b62510640;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - added a refresh logger step to the nose plugin so that SQLA class loggers get correct state from nose cmdline - fix mapper logging [ticket:1620] --- diff --git a/lib/sqlalchemy/log.py b/lib/sqlalchemy/log.py index b20e116cff..9c5a48c3b8 100644 --- a/lib/sqlalchemy/log.py +++ b/lib/sqlalchemy/log.py @@ -46,6 +46,7 @@ def default_logging(name): '%(asctime)s %(levelname)s %(name)s %(message)s')) rootlogger.addHandler(handler) +_logged_classes = set() def class_logger(cls, enable=False): logger = logging.getLogger(cls.__module__ + "." + cls.__name__) if enable == 'debug': @@ -55,7 +56,14 @@ def class_logger(cls, enable=False): cls._should_log_debug = logger.isEnabledFor(logging.DEBUG) cls._should_log_info = logger.isEnabledFor(logging.INFO) cls.logger = logger - + _logged_classes.add(cls) + +def _refresh_class_loggers(): + for cls in _logged_classes: + logger = logging.getLogger(cls.__module__ + "." + cls.__name__) + cls._should_log_debug = logger.isEnabledFor(logging.DEBUG) + cls._should_log_info = logger.isEnabledFor(logging.INFO) + def instance_logger(instance, echoflag=None): """create a logger for an instance. diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 881f0d5466..5e43655266 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -753,7 +753,9 @@ class Mapper(object): self.logger.info( "(" + self.class_.__name__ + "|" + - (self.local_table and self.local_table.description or str(self.local_table)) + + (self.local_table is not None and + self.local_table.description or + str(self.local_table)) + (self.non_primary and "|non-primary" or "") + ") " + msg) @@ -762,7 +764,9 @@ class Mapper(object): self.logger.debug( "(" + self.class_.__name__ + "|" + - (self.local_table and self.local_table.description or str(self.local_table)) + + (self.local_table is not None and + self.local_table.description + or str(self.local_table)) + (self.non_primary and "|non-primary" or "") + ") " + msg) diff --git a/lib/sqlalchemy/test/noseplugin.py b/lib/sqlalchemy/test/noseplugin.py index c4f32a1630..329127c98d 100644 --- a/lib/sqlalchemy/test/noseplugin.py +++ b/lib/sqlalchemy/test/noseplugin.py @@ -14,7 +14,7 @@ from config import db, db_label, db_url, file_config, base_config, \ _set_table_options, _reverse_topological, _log from sqlalchemy.test import testing, config, requires from nose.plugins import Plugin -from sqlalchemy import util +from sqlalchemy import util, log as sqla_log import nose.case log = logging.getLogger('nose.plugins.sqlalchemy') @@ -83,7 +83,9 @@ class NoseSQLAlchemy(Plugin): # Lazy setup of other options (post coverage) for fn in post_configure: fn(self.options, file_config) - + + sqla_log._refresh_class_loggers() + def describeTest(self, test): return ""