From e5b031e533a718c9955e8f91fa19acf3f090f0a0 Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Fri, 22 Jul 2016 12:49:19 -0400 Subject: [PATCH] use existing logging infrastructure --- awx/main/migrations/_rbac.py | 27 +---------- awx/main/migrations/_system_tracking.py | 19 +------- awx/main/migrations/_team_cleanup.py | 19 +------- awx/settings/defaults.py | 37 ++++++++++++++- awx/settings/production.py | 57 +++-------------------- tools/docker-compose/start_development.sh | 3 -- 6 files changed, 46 insertions(+), 116 deletions(-) diff --git a/awx/main/migrations/_rbac.py b/awx/main/migrations/_rbac.py index 8bebca3c6c..e263271eab 100644 --- a/awx/main/migrations/_rbac.py +++ b/awx/main/migrations/_rbac.py @@ -8,25 +8,8 @@ from collections import defaultdict from awx.main.utils import getattrd from awx.main.models.rbac import Role, batch_role_ancestor_rebuilding -logger = logging.getLogger(__name__) +logger = logging.getLogger('rbac_migrations') -def log_migration(wrapped): - '''setup the logging mechanism for each migration method - as it runs, Django resets this, so we use a decorator - to re-add the handler for each method. - ''' - handler = logging.FileHandler("/var/log/tower/tower_rbac_migrations.log", mode="a", encoding="UTF-8") - formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') - handler.setLevel(logging.DEBUG) - handler.setFormatter(formatter) - - def wrapper(*args, **kwargs): - logger.handlers = [] - logger.addHandler(handler) - return wrapped(*args, **kwargs) - return wrapper - -@log_migration def create_roles(apps, schema_editor): ''' Implicit role creation happens in our post_save hook for all of our @@ -56,7 +39,6 @@ def create_roles(apps, schema_editor): obj.save() -@log_migration def migrate_users(apps, schema_editor): User = apps.get_model('auth', "User") Role = apps.get_model('main', "Role") @@ -89,7 +71,6 @@ def migrate_users(apps, schema_editor): sa_role.members.add(user) logger.warning(smart_text(u"added superuser: {}".format(user.username))) -@log_migration def migrate_organization(apps, schema_editor): Organization = apps.get_model('main', "Organization") for org in Organization.objects.iterator(): @@ -100,7 +81,6 @@ def migrate_organization(apps, schema_editor): org.member_role.members.add(user) logger.info(smart_text(u"added member: {}, {}".format(org.name, user.username))) -@log_migration def migrate_team(apps, schema_editor): Team = apps.get_model('main', 'Team') for t in Team.objects.iterator(): @@ -172,7 +152,6 @@ def _discover_credentials(instances, cred, orgfunc): _update_credential_parents(org, cred) -@log_migration def migrate_credential(apps, schema_editor): Credential = apps.get_model('main', "Credential") JobTemplate = apps.get_model('main', 'JobTemplate') @@ -210,7 +189,6 @@ def migrate_credential(apps, schema_editor): logger.warning(smart_text(u"orphaned credential found Credential(name={}, kind={}, host={}), superuser only".format(cred.name, cred.kind, cred.host, ))) -@log_migration def migrate_inventory(apps, schema_editor): Inventory = apps.get_model('main', 'Inventory') Permission = apps.get_model('main', 'Permission') @@ -254,7 +232,6 @@ def migrate_inventory(apps, schema_editor): execrole.members.add(perm.user) logger.info(smart_text(u'added User({}) access to Inventory({})'.format(perm.user.username, inventory.name))) -@log_migration def migrate_projects(apps, schema_editor): ''' I can see projects when: @@ -368,7 +345,6 @@ def migrate_projects(apps, schema_editor): -@log_migration def migrate_job_templates(apps, schema_editor): ''' NOTE: This must be run after orgs, inventory, projects, credential, and @@ -499,7 +475,6 @@ def migrate_job_templates(apps, schema_editor): -@log_migration def rebuild_role_hierarchy(apps, schema_editor): logger.info('Computing role roots..') start = time() diff --git a/awx/main/migrations/_system_tracking.py b/awx/main/migrations/_system_tracking.py index 476bfc913a..931c5c467c 100644 --- a/awx/main/migrations/_system_tracking.py +++ b/awx/main/migrations/_system_tracking.py @@ -9,25 +9,8 @@ from awx.fact.utils.dbtransform import KeyTransform from mongoengine.connection import ConnectionError from pymongo.errors import OperationFailure -logger = logging.getLogger(__name__) +logger = logging.getLogger('system_tracking_migrations') -def log_migration(wrapped): - '''setup the logging mechanism for each migration method - as it runs, Django resets this, so we use a decorator - to re-add the handler for each method. - ''' - handler = logging.FileHandler("/var/log/tower/tower_system_tracking_migrations.log", mode="a", encoding="UTF-8") - formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') - handler.setLevel(logging.DEBUG) - handler.setFormatter(formatter) - - def wrapper(*args, **kwargs): - logger.handlers = [] - logger.addHandler(handler) - return wrapped(*args, **kwargs) - return wrapper - -@log_migration def migrate_facts(apps, schema_editor): Fact = apps.get_model('main', "Fact") Host = apps.get_model('main', "Host") diff --git a/awx/main/migrations/_team_cleanup.py b/awx/main/migrations/_team_cleanup.py index 5af2b26492..7c0db85309 100644 --- a/awx/main/migrations/_team_cleanup.py +++ b/awx/main/migrations/_team_cleanup.py @@ -2,25 +2,8 @@ import logging from django.utils.encoding import smart_text -logger = logging.getLogger(__name__) +logger = logging.getLogger('rbac_migrations') -def log_migration(wrapped): - '''setup the logging mechanism for each migration method - as it runs, Django resets this, so we use a decorator - to re-add the handler for each method. - ''' - handler = logging.FileHandler("/var/log/tower/tower_rbac_migrations.log", mode="a", encoding="UTF-8") - formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') - handler.setLevel(logging.DEBUG) - handler.setFormatter(formatter) - - def wrapper(*args, **kwargs): - logger.handlers = [] - logger.addHandler(handler) - return wrapped(*args, **kwargs) - return wrapper - -@log_migration def migrate_team(apps, schema_editor): '''If an orphan team exists that is still active, delete it.''' Team = apps.get_model('main', 'Team') diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index a4110e8286..e152ad28e8 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -941,7 +941,34 @@ LOGGING = { 'maxBytes': 1024 * 1024 * 5, # 5 MB 'backupCount': 5, 'formatter':'simple', - } + }, + 'fact_receiver': { + 'level': 'WARNING', + 'class':'logging.handlers.RotatingFileHandler', + 'filters': ['require_debug_false'], + 'filename': os.path.join(LOG_ROOT, 'fact_receiver.log'), + 'maxBytes': 1024 * 1024 * 5, # 5 MB + 'backupCount': 5, + 'formatter':'simple', + }, + 'system_tracking_migrations': { + 'level': 'WARNING', + 'class':'logging.handlers.RotatingFileHandler', + 'filters': ['require_debug_false'], + 'filename': os.path.join(LOG_ROOT, 'tower_system_tracking_migrations.log'), + 'maxBytes': 1024 * 1024 * 5, # 5 MB + 'backupCount': 5, + 'formatter':'simple', + }, + 'rbac_migrations': { + 'level': 'WARNING', + 'class':'logging.handlers.RotatingFileHandler', + 'filters': ['require_debug_false'], + 'filename': os.path.join(LOG_ROOT, 'tower_rbac_migrations.log'), + 'maxBytes': 1024 * 1024 * 5, # 5 MB + 'backupCount': 5, + 'formatter':'simple', + }, }, 'loggers': { 'django': { @@ -1000,6 +1027,14 @@ LOGGING = { 'handlers': ['console', 'file', 'tower_warnings'], 'level': 'DEBUG', }, + 'system_tracking_migrations': { + 'handlers': ['console', 'file', 'tower_warnings'], + 'level': 'DEBUG', + }, + 'rbac_migrations': { + 'handlers': ['console', 'file', 'tower_warnings'], + 'level': 'DEBUG', + }, } } diff --git a/awx/settings/production.py b/awx/settings/production.py index 1f33f2bbbd..7b07b8d0a7 100644 --- a/awx/settings/production.py +++ b/awx/settings/production.py @@ -49,56 +49,13 @@ ANSIBLE_VENV_PATH = "/var/lib/awx/venv/ansible" TOWER_USE_VENV = True TOWER_VENV_PATH = "/var/lib/awx/venv/tower" -LOGGING['handlers']['tower_warnings'] = { - 'level': 'WARNING', - 'class':'logging.handlers.RotatingFileHandler', - 'filters': ['require_debug_false'], - 'filename': '/var/log/tower/tower.log', - 'maxBytes': 1024 * 1024 * 5, # 5 MB - 'backupCount': 5, - 'formatter':'simple', -} - - -LOGGING['handlers']['callback_receiver'] = { - 'level': 'WARNING', - 'class':'logging.handlers.RotatingFileHandler', - 'filters': ['require_debug_false'], - 'filename': '/var/log/tower/callback_receiver.log', - 'maxBytes': 1024 * 1024 * 5, # 5 MB - 'backupCount': 5, - 'formatter':'simple', -} - -LOGGING['handlers']['socketio_service'] = { - 'level': 'WARNING', - 'class':'logging.handlers.RotatingFileHandler', - 'filters': ['require_debug_false'], - 'filename': '/var/log/tower/socketio_service.log', - 'maxBytes': 1024 * 1024 * 5, # 5 MB - 'backupCount': 5, - 'formatter':'simple', -} - -LOGGING['handlers']['task_system'] = { - 'level': 'INFO', - 'class':'logging.handlers.RotatingFileHandler', - 'filters': ['require_debug_false'], - 'filename': '/var/log/tower/task_system.log', - 'maxBytes': 1024 * 1024 * 5, # 5 MB - 'backupCount': 5, - 'formatter':'simple', -} - -LOGGING['handlers']['fact_receiver'] = { - 'level': 'WARNING', - 'class':'logging.handlers.RotatingFileHandler', - 'filters': ['require_debug_false'], - 'filename': '/var/log/tower/fact_receiver.log', - 'maxBytes': 1024 * 1024 * 5, # 5 MB - 'backupCount': 5, - 'formatter':'simple', -} +LOGGING['handlers']['tower_warnings']['filename'] = '/var/log/tower/tower.log' +LOGGING['handlers']['callback_receiver']['filename'] = '/var/log/tower/callback_receiver.log' +LOGGING['handlers']['socketio_service']['filename'] = '/var/log/tower/socketio_service.log' +LOGGING['handlers']['task_system']['filename'] = '/var/log/tower/task_system.log' +LOGGING['handlers']['fact_receiver']['filename'] = '/var/log/tower/fact_receiver.log' +LOGGING['handlers']['system_tracking_migrations']['filename'] = '/var/log/tower/tower_system_tracking_migrations.log' +LOGGING['handlers']['rbac_migrations']['filename'] = '/var/log/tower/tower_rbac_migrations.log', # Load settings from any .py files in the global conf.d directory specified in # the environment, defaulting to /etc/tower/conf.d/. diff --git a/tools/docker-compose/start_development.sh b/tools/docker-compose/start_development.sh index 634dc02749..16d859a3ce 100755 --- a/tools/docker-compose/start_development.sh +++ b/tools/docker-compose/start_development.sh @@ -10,9 +10,6 @@ ansible -i "127.0.0.1," -c local -v -m wait_for -a "host=redis port=6379" all ansible -i "127.0.0.1," -c local -v -m postgresql_user -U postgres -a "name=awx-dev password=AWXsome1 login_user=postgres login_host=postgres" all ansible -i "127.0.0.1," -c local -v -m postgresql_db -U postgres -a "name=awx-dev owner=awx-dev login_user=postgres login_host=postgres" all -# For migration log -mkdir -p /var/log/tower/ - # Move to the source directory so we can bootstrap if [ -f "/tower_devel/manage.py" ]; then cd /tower_devel