]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Raise an error when invalid option
authorPing <yuanta11@gmail.com>
Fri, 28 Aug 2015 00:47:50 +0000 (08:47 +0800)
committerPing <yuanta11@gmail.com>
Sun, 6 Sep 2015 06:57:02 +0000 (14:57 +0800)
tornado/log.py
tornado/test/log_test.py

index 9b147bf0a04c3a78a82a90774b0a13f2562f0e93..f8ab706b00f5ad7cd399915f6e629a7e70f679e6 100644 (file)
@@ -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)
 
index 33f2cbc25894a4c38d12df6bda6e4d9eb5d89855..b538c4b5434895c8dad9abe000b7b8bbf62e6778 100644 (file)
@@ -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."""