From ca0ee9f3d074b974850c0ffaaaa41e9f52fc22f9 Mon Sep 17 00:00:00 2001 From: Andrew Melton Date: Thu, 7 Nov 2013 10:12:55 -0500 Subject: [PATCH] Fixing logging First, setting up the default logger name for worker and verifier. Without this, logging from the reconciler and the database api will end up in stacktach-default. This would mean both the verifier and worker will be attempting to rotate that log file, thus locking themselves. Second, using the child logging process when calling the info/warn/error functions directly in stacklog. Othweise this will cause the callers to get or create the parent logger process. --- stacktach/stacklog.py | 6 +++--- tests/unit/__init__.py | 3 +++ tests/unit/test_stacklog.py | 2 +- tests/unit/test_stacktach.py | 6 ++++-- tests/unit/test_stacktach_db.py | 5 +++-- verifier/base_verifier.py | 2 ++ verifier/glance_verifier.py | 2 ++ verifier/nova_verifier.py | 2 ++ verifier/start_verifier.py | 2 +- worker/start_workers.py | 1 + worker/worker.py | 2 ++ 11 files changed, 24 insertions(+), 9 deletions(-) diff --git a/stacktach/stacklog.py b/stacktach/stacklog.py index fe7d496..65445d3 100644 --- a/stacktach/stacklog.py +++ b/stacktach/stacklog.py @@ -86,19 +86,19 @@ def get_logger(name=None, is_parent=True): def warn(msg, name=None): if name is None: name = default_logger_name - get_logger(name=name).warn(msg) + get_logger(name=name, is_parent=False).warn(msg) def error(msg, name=None): if name is None: name = default_logger_name - get_logger(name=name).error(msg) + get_logger(name=name, is_parent=False).error(msg) def info(msg, name=None): if name is None: name = default_logger_name - get_logger(name=name).info(msg) + get_logger(name=name, is_parent=False).info(msg) def _create_timed_rotating_logger(name): diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py index a3dbb9b..0079235 100644 --- a/tests/unit/__init__.py +++ b/tests/unit/__init__.py @@ -47,6 +47,9 @@ setup_environment() from stacktach import stacklog stacklog.set_default_logger_location("/tmp/%s.log") +default_logger = stacklog.get_logger() +worker_logger = stacklog.get_logger('worker') +verifier_logger = stacklog.get_logger('verifier') class _AssertRaisesContext(object): diff --git a/tests/unit/test_stacklog.py b/tests/unit/test_stacklog.py index 644a140..569abbb 100644 --- a/tests/unit/test_stacklog.py +++ b/tests/unit/test_stacklog.py @@ -33,7 +33,7 @@ class StacklogTestCase(StacktachBaseTestCase): def test_get_logger_should_use_default_name_when_name_not_specified(self): logger = stacklog.get_logger(None, is_parent=True) - self.assertEquals(logger.name, 'stacktach-default') + self.assertEquals(logger.name, stacklog.default_logger_name) stacklog.set_default_logger_name('default') logger = stacklog.get_logger(None, is_parent=True) diff --git a/tests/unit/test_stacktach.py b/tests/unit/test_stacktach.py index 60e36f4..41382c6 100644 --- a/tests/unit/test_stacktach.py +++ b/tests/unit/test_stacktach.py @@ -302,9 +302,11 @@ class StacktachUsageParsingTestCase(StacktachBaseTestCase): def setup_mock_log(self, name=None): if name is None: - stacklog.get_logger(name=mox.IgnoreArg()).AndReturn(self.log) + stacklog.get_logger(name=mox.IgnoreArg(), + is_parent=False).AndReturn(self.log) else: - stacklog.get_logger(name=name).AndReturn(self.log) + stacklog.get_logger(name=name, + is_parent=False).AndReturn(self.log) def test_all_instance_events_have_mapping(self): for key, value in views.INSTANCE_EVENT.items(): diff --git a/tests/unit/test_stacktach_db.py b/tests/unit/test_stacktach_db.py index b73efeb..e6139b3 100644 --- a/tests/unit/test_stacktach_db.py +++ b/tests/unit/test_stacktach_db.py @@ -59,9 +59,10 @@ class StacktachDBTestCase(StacktachBaseTestCase): def setup_mock_log(self, name=None): if name is None: - stacklog.get_logger(name=mox.IgnoreArg()).AndReturn(self.log) + stacklog.get_logger(name=mox.IgnoreArg(), + is_parent=False).AndReturn(self.log) else: - stacklog.get_logger(name=name).AndReturn(self.log) + stacklog.get_logger(name=name, is_parent=False).AndReturn(self.log) def test_safe_get(self): Model = self.mox.CreateMockAnything() diff --git a/verifier/base_verifier.py b/verifier/base_verifier.py index cf06042..7033ebc 100644 --- a/verifier/base_verifier.py +++ b/verifier/base_verifier.py @@ -42,6 +42,8 @@ from django.core import exceptions from verifier import WrongTypeException from stacktach import stacklog +stacklog.set_default_logger_name('verifier') + def _get_child_logger(): return stacklog.get_logger('verifier', is_parent=False) diff --git a/verifier/glance_verifier.py b/verifier/glance_verifier.py index 69ffbf0..459b0a3 100644 --- a/verifier/glance_verifier.py +++ b/verifier/glance_verifier.py @@ -41,6 +41,8 @@ from stacktach import stacklog from stacktach import message_service import datetime +stacklog.set_default_logger_name('verifier') + def _get_child_logger(): return stacklog.get_logger('verifier', is_parent=False) diff --git a/verifier/nova_verifier.py b/verifier/nova_verifier.py index faebde9..09165cd 100644 --- a/verifier/nova_verifier.py +++ b/verifier/nova_verifier.py @@ -42,6 +42,8 @@ from verifier import NotFound from verifier import VerificationException from stacktach import message_service +stacklog.set_default_logger_name('verifier') + def _get_child_logger(): return stacklog.get_logger('verifier', is_parent=False) diff --git a/verifier/start_verifier.py b/verifier/start_verifier.py index 7216129..63a834e 100644 --- a/verifier/start_verifier.py +++ b/verifier/start_verifier.py @@ -44,7 +44,7 @@ except ImportError: process = None log_listener = None processes = [] - +stacklog.set_default_logger_name('verifier') def _get_parent_logger(): return stacklog.get_logger('verifier', is_parent=True) diff --git a/worker/start_workers.py b/worker/start_workers.py index 28c7dac..cbc3edd 100644 --- a/worker/start_workers.py +++ b/worker/start_workers.py @@ -17,6 +17,7 @@ from worker import config processes = [] log_listener = None +stacklog.set_default_logger_name('worker') def _get_parent_logger(): diff --git a/worker/worker.py b/worker/worker.py index 19c5b0f..e5d9b1b 100644 --- a/worker/worker.py +++ b/worker/worker.py @@ -39,6 +39,8 @@ from stacktach import message_service from stacktach import stacklog from stacktach import views +stacklog.set_default_logger_name('worker') + def _get_child_logger(): return stacklog.get_logger('worker', is_parent=False)