]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Fix an import that's been missing since the options/log refactoring.
authorBen Darnell <ben@bendarnell.com>
Sun, 30 Dec 2012 20:38:09 +0000 (21:38 +0100)
committerBen Darnell <ben@bendarnell.com>
Sun, 30 Dec 2012 20:38:09 +0000 (21:38 +0100)
Add a test for this previously-uncovered code.

tornado/log.py
tornado/test/log_test.py

index 7a4a8332f29e67628c2dc3784314bc8529856bcc..72433536b74205450a9d1f6aedce3d408f8853c9 100644 (file)
@@ -31,6 +31,7 @@ to a separate file for analysis.
 from __future__ import absolute_import, division, with_statement
 
 import logging
+import logging.handlers
 import sys
 import time
 
@@ -141,7 +142,7 @@ class LogFormatter(logging.Formatter):
             formatted = formatted.rstrip() + "\n" + record.exc_text
         return formatted.replace("\n", "\n    ")
 
-def enable_pretty_logging(options=None):
+def enable_pretty_logging(options=None, logger=None):
     """Turns on formatted logging output as configured.
 
     This is called automaticaly by `tornado.options.parse_command_line`
@@ -151,22 +152,23 @@ def enable_pretty_logging(options=None):
         from tornado.options import options
     if options.logging == 'none':
         return
-    root_logger = logging.getLogger()
-    root_logger.setLevel(getattr(logging, options.logging.upper()))
+    if logger is None:
+        logger = logging.getLogger()
+    logger.setLevel(getattr(logging, options.logging.upper()))
     if options.log_file_prefix:
         channel = logging.handlers.RotatingFileHandler(
             filename=options.log_file_prefix,
             maxBytes=options.log_file_max_size,
             backupCount=options.log_file_num_backups)
         channel.setFormatter(LogFormatter(color=False))
-        root_logger.addHandler(channel)
+        logger.addHandler(channel)
 
     if (options.log_to_stderr or
-        (options.log_to_stderr is None and not root_logger.handlers)):
+        (options.log_to_stderr is None and not logger.handlers)):
         # Set up color if we are in a tty and curses is installed
         channel = logging.StreamHandler()
         channel.setFormatter(LogFormatter())
-        root_logger.addHandler(channel)
+        logger.addHandler(channel)
 
 
 def define_logging_options(options=None):
index a7e5992f8fc1abc9d8ab2c1780e2adacfd160e27..1ec354766c5cad6efa57fd3b6ba61bafec3ad9cd 100644 (file)
@@ -16,6 +16,7 @@
 from __future__ import absolute_import, division, with_statement
 
 import contextlib
+import glob
 import logging
 import os
 import re
@@ -23,7 +24,8 @@ import tempfile
 import warnings
 
 from tornado.escape import utf8
-from tornado.log import LogFormatter
+from tornado.log import LogFormatter, define_logging_options, enable_pretty_logging
+from tornado.options import OptionParser
 from tornado.test.util import unittest
 from tornado.util import b, bytes_type
 
@@ -116,3 +118,32 @@ class UnicodeLogFormatterTest(LogFormatterTest):
     def test_unicode_logging(self):
         self.logger.error(u"\u00e9")
         self.assertEqual(self.get_output(), utf8(u"\u00e9"))
+
+
+class EnablePrettyLoggingTest(unittest.TestCase):
+    def setUp(self):
+        super(EnablePrettyLoggingTest, self).setUp()
+        self.options = OptionParser()
+        define_logging_options(self.options)
+        self.logger = logging.Logger('tornado.test.log_test.EnablePrettyLoggingTest')
+        self.logger.propagate = False
+
+    def test_log_file(self):
+        tmpdir = tempfile.mkdtemp()
+        try:
+            self.options.log_file_prefix = tmpdir + '/test_log'
+            enable_pretty_logging(options=self.options, logger=self.logger)
+            self.assertEqual(1, len(self.logger.handlers))
+            self.logger.error('hello')
+            self.logger.handlers[0].flush()
+            filenames = glob.glob(tmpdir + '/test_log*')
+            self.assertEqual(1, len(filenames))
+            with open(filenames[0]) as f:
+                self.assertRegexpMatches(f.read(), r'^\[E [^]]*\] hello$')
+        finally:
+            for handler in self.logger.handlers:
+                handler.flush()
+                handler.close()
+            for filename in glob.glob(tmpdir + '/test_log*'):
+                os.unlink(filename)
+            os.rmdir(tmpdir)