[svn] commit: r2918 - in /branches/trac267/src/lib/python/isc/log: log.py tests/log_test.py

BIND 10 source code commits bind10-changes at lists.isc.org
Tue Sep 14 14:34:14 UTC 2010


Author: chenzhengzhang
Date: Tue Sep 14 14:34:13 2010
New Revision: 2918

Log:
modified according to trac267 comments

Modified:
    branches/trac267/src/lib/python/isc/log/log.py
    branches/trac267/src/lib/python/isc/log/tests/log_test.py

Modified: branches/trac267/src/lib/python/isc/log/log.py
==============================================================================
--- branches/trac267/src/lib/python/isc/log/log.py (original)
+++ branches/trac267/src/lib/python/isc/log/log.py Tue Sep 14 14:34:13 2010
@@ -45,14 +45,18 @@
 
     def __init__(self, filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=0):
         dir = os.path.split(filename)
+        # Create log directory beforehand, because the underlying logging framework won't 
+        # create non-exsiting log directory on writing logs.
         if not (os.path.exists(dir[0])):
             os.makedirs(dir[0])
         super(NSFileLogHandler, self).__init__(filename, mode, maxBytes,
                                                 backupCount, encoding, delay)
+
     def handleError(self, record):
+        """Overwrite handleError to provide more user-friendly error messages"""
         if logging.raiseExceptions:
             ei = sys.exc_info()
-            log_err("[b10-logging] Update logging config fail", str(ei[1]))
+            log_err("[b10-logging] ", str(ei[1]))
 
     def shouldRollover(self, record):
         """Rewrite RotatingFileHandler.shouldRollover. 
@@ -61,8 +65,9 @@
         """
         dfn = self.baseFilename
         if (self.stream) and (not os.path.exists(dfn)): #Does log file exist?
-            self.stream.close()
             self.stream = None
+            # Log directory may be deleted while bind10 running or updated with a
+            # non-existing directory.
             dir = os.path.split(dfn)
             if not (os.path.exists(dir[0])): #Does log subdirectory exist?
                 os.makedirs(dir[0])
@@ -253,7 +258,7 @@
         logLevel = LEVELS.get(level, logging.NOTSET)
         try:
             self.log(logLevel, msg, *args, **kwargs)
-        except Exception as e:
-            log_err("[b10-logging] Log message fail", str(e))
-
-
+        except (TypeError, KeyError) as e:
+            sys.stderr.write("[b10-logging] Log message fail %s\n" % (str(e)))
+
+

Modified: branches/trac267/src/lib/python/isc/log/tests/log_test.py
==============================================================================
--- branches/trac267/src/lib/python/isc/log/tests/log_test.py (original)
+++ branches/trac267/src/lib/python/isc/log/tests/log_test.py Tue Sep 14 14:34:13 2010
@@ -37,11 +37,8 @@
         self.assertEqual(self.handler.backupCount, 3)
 
     def test_handle_Error(self):
-        record = logging.LogRecord(None, None, "", 0, "rotate file handler", (), None, None)
-        logging.raiseExceptions = 0
-        self.handler.handleError(record)
-        logging.raiseExceptions = 1
-        self.handler.handleError(record)
+        # handle_Error() just print out error message
+        pass
 
     def tearDown(self):
         self.handler.flush()
@@ -69,13 +66,13 @@
 class TestLogging(unittest.TestCase):
     
     def setUp(self):
-        self.FILE_STREAM_LOG1= tempfile.NamedTemporaryFile(mode='w',
+        self.FILE_STREAM_LOG1 = tempfile.NamedTemporaryFile(mode='w',
                                                       prefix="b10",
                                                       delete=True)
-        self.FILE_STREAM_LOG2= tempfile.NamedTemporaryFile(mode='w',
+        self.FILE_STREAM_LOG2 = tempfile.NamedTemporaryFile(mode='w',
                                                       prefix="b10",
                                                       delete=True)
-        self.FILE_STREAM_LOG3= tempfile.NamedTemporaryFile(mode='w',
+        self.FILE_STREAM_LOG3 = tempfile.NamedTemporaryFile(mode='w',
                                                       prefix="b10",
                                                       delete=True)
         self.file_stream_logger = NSLogger('File_Stream_Logger',
@@ -157,6 +154,18 @@
         ret = self.file_stream_logger._file_handler in self.file_stream_logger.handlers
         self.assertTrue(ret)
 
+    def test_get_config(self):
+        config_data = {'log_file' : self.FILE_STREAM_LOG1.name,
+                       'log_severity' : 'critical',
+                       'log_versions' : 4,
+                       'log_max_bytes' : 1024}
+        self.file_stream_logger._get_config(config_data)
+        self.assertEqual(self.file_stream_logger._log_file, self.FILE_STREAM_LOG1.name)
+        self.assertEqual(self.file_stream_logger._severity, 'critical')
+        self.assertEqual(self.file_stream_logger._versions, 4)
+        self.assertEqual(self.file_stream_logger._max_bytes, 1024)
+
+
     def test_update_config(self):
         update_config = {'log_file' : self.FILE_STREAM_LOG1.name,
                          'log_severity' : 'error',
@@ -175,8 +184,10 @@
         self.file_stream_logger.log_message('debug', 'debug message')
         self.file_stream_logger.log_message('warning', 'warning message')
         self.file_stream_logger.log_message('error', 'error message')
-        self.file_stream_logger.log_message('not-exist', 'not exist message')
-        self.file_stream_logger.log_message('critical', 'critical message', extra=['message', 'asctime'])
+        #test non-exist log level
+        self.assertRaises(None, self.file_stream_logger.log_message('not-exist', 'not exist message'))
+        #test log_message KeyError exception
+        self.assertRaises(None, self.file_stream_logger.log_message('critical', 'critical message', extra=['message', 'asctime']))
         self.assertTrue(os.path.exists(self.FILE_STREAM_LOG3.name))
     
     def tearDown(self):




More information about the bind10-changes mailing list