]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- added a refresh logger step to the nose plugin so that SQLA class loggers get corre...
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 3 Jan 2010 18:42:23 +0000 (18:42 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 3 Jan 2010 18:42:23 +0000 (18:42 +0000)
- fix mapper logging [ticket:1620]

lib/sqlalchemy/log.py
lib/sqlalchemy/orm/mapper.py
lib/sqlalchemy/test/noseplugin.py

index b20e116cff8a59d92beb6f41e6b55f9299d09547..9c5a48c3b8a7658426fb8f3d5b97d732083605a1 100644 (file)
@@ -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.
     
index 881f0d5466ec1e19e8b4ddeaa8e58781dcf5cc47..5e436552666b13e07d8f84bb54f167cd856946ba 100644 (file)
@@ -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)
 
index c4f32a1630a86c09ecf2b84926dc474c277d7ba0..329127c98d9201528615df60449ebcf22b24b1e8 100644 (file)
@@ -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 ""