From: Ping Date: Fri, 28 Aug 2015 00:47:50 +0000 (+0800) Subject: Raise an error when invalid option X-Git-Tag: v4.3.0b1~51^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d0ac1d2897a18714e748873b44fe9967c21a5cf;p=thirdparty%2Ftornado.git Raise an error when invalid option --- diff --git a/tornado/log.py b/tornado/log.py index 9b147bf0a..f8ab706b0 100644 --- a/tornado/log.py +++ b/tornado/log.py @@ -190,19 +190,27 @@ def enable_pretty_logging(options=None, logger=None): logger = logging.getLogger() logger.setLevel(getattr(logging, options.logging.upper())) if options.log_file_prefix: - if options.log_rotate_mode == 'size': + rotate_mode = options.log_rotate_mode + if rotate_mode == 'size': channel = logging.handlers.RotatingFileHandler( filename=options.log_file_prefix, maxBytes=options.log_file_max_size, backupCount=options.log_file_num_backups) - elif options.log_rotate_mode == 'time': + elif rotate_mode == 'time': channel = logging.handlers.TimedRotatingFileHandler( filename=options.log_file_prefix, when=options.log_rotate_when, interval=options.log_rotate_interval, backupCount=options.log_file_num_backups) else: - channel = logging.NullHandler() + if not isinstance(rotate_mode, str): + error_message = 'The type of log_rotate_mode option should be ' +\ + 'str, not {}.'.format(str(type(rotate_mode))) + raise TypeError(error_message) + else: + error_message = 'The value of log_rotate_mode option should be ' +\ + '"size" or "time", not "{}".'.format(rotate_mode) + raise ValueError(error_message) channel.setFormatter(LogFormatter(color=False)) logger.addHandler(channel) diff --git a/tornado/test/log_test.py b/tornado/test/log_test.py index 33f2cbc25..b538c4b54 100644 --- a/tornado/test/log_test.py +++ b/tornado/test/log_test.py @@ -183,6 +183,28 @@ class EnablePrettyLoggingTest(unittest.TestCase): os.unlink(filename) os.rmdir(tmpdir) + def test_wrong_rotate_mode_value(self): + try: + self.options.log_file_prefix = 'some_path' + self.options.log_rotate_mode = 'wrong_mode' + self.assertRaises(ValueError, enable_pretty_logging, + options=self.options, logger=self.logger) + finally: + for handler in self.logger.handlers: + handler.flush() + handler.close() + + def test_wrong_rotate_mode_type(self): + try: + self.options.log_file_prefix = 'some_path' + self.options.log_rotate_mode = None + self.assertRaises(TypeError, enable_pretty_logging, + options=self.options, logger=self.logger) + finally: + for handler in self.logger.handlers: + handler.flush() + handler.close() + class LoggingOptionTest(unittest.TestCase): """Test the ability to enable and disable Tornado's logging hooks."""