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()
|
||||
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():
|
||||
logging.basicConfig()
|
||||
@@ -125,12 +134,8 @@ def basicConfig():
|
||||
syslog = SysLogHandler(address='/dev/log')
|
||||
syslog.setFormatter(_formatter)
|
||||
logging.root.addHandler(syslog)
|
||||
if FLAGS.logfile or FLAGS.logdir:
|
||||
if FLAGS.logfile:
|
||||
logfile = FLAGS.logfile
|
||||
else:
|
||||
binary = os.path.basename(inspect.stack()[-1][1])
|
||||
logpath = '%s.log' % (os.path.join(FLAGS.logdir, binary),)
|
||||
logpath = get_log_file_path()
|
||||
if logpath:
|
||||
logfile = FileHandler(logpath)
|
||||
logfile.setFormatter(_formatter)
|
||||
logging.root.addHandler(logfile)
|
||||
|
@@ -46,6 +46,27 @@ class RootLoggerTestCase(test.TestCase):
|
||||
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):
|
||||
def setUp(self):
|
||||
super(NovaFormatterTestCase, self).setUp()
|
||||
|
Reference in New Issue
Block a user