[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