Refactor code that decides which logfile to use, if any.
Adds unit tests.
This commit is contained in:
		
							
								
								
									
										17
									
								
								nova/log.py
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								nova/log.py
									
									
									
									
									
								
							@@ -112,6 +112,15 @@ def _dictify_context(context):
 | 
				
			|||||||
        context = context.to_dict()
 | 
					        context = context.to_dict()
 | 
				
			||||||
    return context
 | 
					    return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def _get_binary_name():
 | 
				
			||||||
 | 
					    return os.path.basename(inspect.stack()[-1][1])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_log_file_path(binary=None):
 | 
				
			||||||
 | 
					    if FLAGS.logfile:
 | 
				
			||||||
 | 
					        return FLAGS.logfile
 | 
				
			||||||
 | 
					    if FLAGS.logdir:
 | 
				
			||||||
 | 
					        binary = binary or _get_binary_name()
 | 
				
			||||||
 | 
					        return '%s.log' % (os.path.join(FLAGS.logdir, binary),)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def basicConfig():
 | 
					def basicConfig():
 | 
				
			||||||
    logging.basicConfig()
 | 
					    logging.basicConfig()
 | 
				
			||||||
@@ -125,12 +134,8 @@ def basicConfig():
 | 
				
			|||||||
        syslog = SysLogHandler(address='/dev/log')
 | 
					        syslog = SysLogHandler(address='/dev/log')
 | 
				
			||||||
        syslog.setFormatter(_formatter)
 | 
					        syslog.setFormatter(_formatter)
 | 
				
			||||||
        logging.root.addHandler(syslog)
 | 
					        logging.root.addHandler(syslog)
 | 
				
			||||||
    if FLAGS.logfile or FLAGS.logdir:
 | 
					    logpath = get_log_file_path()
 | 
				
			||||||
        if FLAGS.logfile:
 | 
					    if logpath:
 | 
				
			||||||
            logfile = FLAGS.logfile
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            binary = os.path.basename(inspect.stack()[-1][1])
 | 
					 | 
				
			||||||
            logpath = '%s.log' % (os.path.join(FLAGS.logdir, binary),)
 | 
					 | 
				
			||||||
        logfile = FileHandler(logpath)
 | 
					        logfile = FileHandler(logpath)
 | 
				
			||||||
        logfile.setFormatter(_formatter)
 | 
					        logfile.setFormatter(_formatter)
 | 
				
			||||||
        logging.root.addHandler(logfile)
 | 
					        logging.root.addHandler(logfile)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,6 +46,27 @@ class RootLoggerTestCase(test.TestCase):
 | 
				
			|||||||
        self.assert_(True)  # didn't raise exception
 | 
					        self.assert_(True)  # didn't raise exception
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LogHandlerTestCase(test.TestCase):
 | 
				
			||||||
 | 
					    def test_log_path_logdir(self):
 | 
				
			||||||
 | 
					        self.flags(logdir='/some/path')
 | 
				
			||||||
 | 
					        self.assertEquals(log.get_log_file_path(binary='foo-bar'),
 | 
				
			||||||
 | 
					                         '/some/path/foo-bar.log')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_log_path_logfile(self):
 | 
				
			||||||
 | 
					        self.flags(logfile='/some/path/foo-bar.log')
 | 
				
			||||||
 | 
					        self.assertEquals(log.get_log_file_path(binary='foo-bar'),
 | 
				
			||||||
 | 
					                         '/some/path/foo-bar.log')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_log_path_none(self):
 | 
				
			||||||
 | 
					        self.assertIsNone(log.get_log_file_path(binary='foo-bar'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_log_path_logfile_overrides_logdir(self):
 | 
				
			||||||
 | 
					        self.flags(logdir='/some/other/path',
 | 
				
			||||||
 | 
					                   logfile='/some/path/foo-bar.log')
 | 
				
			||||||
 | 
					        self.assertEquals(log.get_log_file_path(binary='foo-bar'),
 | 
				
			||||||
 | 
					                         '/some/path/foo-bar.log')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class NovaFormatterTestCase(test.TestCase):
 | 
					class NovaFormatterTestCase(test.TestCase):
 | 
				
			||||||
    def setUp(self):
 | 
					    def setUp(self):
 | 
				
			||||||
        super(NovaFormatterTestCase, self).setUp()
 | 
					        super(NovaFormatterTestCase, self).setUp()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user