Manage null default state for logging integration and DB definition

This commit is contained in:
AlanCoding
2016-12-02 16:45:27 -05:00
parent ebff4f4f24
commit 064a40ba92
6 changed files with 31 additions and 4 deletions

View File

@@ -15,5 +15,8 @@ class ConfConfig(AppConfig):
self.module.autodiscover() self.module.autodiscover()
from .settings import SettingsWrapper from .settings import SettingsWrapper
SettingsWrapper.initialize() SettingsWrapper.initialize()
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) if settings.LOG_AGGREGATOR_ENABLED:
LOGGING = settings.LOGGING
LOGGING['handlers']['http_receiver']['class'] = 'awx.main.utils.handlers.HTTPSHandler'
configure_logging(settings.LOGGING_CONFIG, LOGGING)
# checks.register(SettingsWrapper._check_settings) # checks.register(SettingsWrapper._check_settings)

View File

@@ -296,3 +296,12 @@ register(
category=_('Logging'), category=_('Logging'),
category_slug='logging', category_slug='logging',
) )
register(
'LOG_AGGREGATOR_ENABLED',
field_class=fields.BooleanField,
default=False,
label=_('Flag denoting whether to use the external logger system'),
help_text=_('If not set, only normal settings data will be used to configure loggers.'),
category=_('Logging'),
category_slug='logging',
)

View File

@@ -23,7 +23,7 @@ from socketio import socketio_manage
from socketio.server import SocketIOServer from socketio.server import SocketIOServer
from socketio.namespace import BaseNamespace from socketio.namespace import BaseNamespace
logger = logging.getLogger('awx.main.consumers') logger = logging.getLogger('awx.main.commands.run_socketio_service')
class SocketSession(object): class SocketSession(object):

View File

@@ -92,7 +92,12 @@ def clear_cache_keys(cache_keys):
cache.delete_many(set_of_keys) cache.delete_many(set_of_keys)
for setting_key in set_of_keys: for setting_key in set_of_keys:
if setting_key.startswith('LOG_AGGREGATOR_'): if setting_key.startswith('LOG_AGGREGATOR_'):
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) LOGGING = settings.LOGGING
if settings.LOG_AGGREGATOR_ENABLED:
LOGGING['handlers']['http_receiver']['class'] = 'awx.main.utils.handlers.HTTPSHandler'
else:
LOGGING['handlers']['http_receiver']['class'] = 'awx.main.utils.handlers.HTTPSNullHandler'
configure_logging(settings.LOGGING_CONFIG, LOGGING)
break break

View File

@@ -14,6 +14,7 @@ from requests_futures.sessions import FuturesSession
# custom # custom
from django.conf import settings as django_settings from django.conf import settings as django_settings
from django.utils.log import NullHandler
# AWX external logging handler, generally designed to be used # AWX external logging handler, generally designed to be used
# with the accompanying LogstashHandler, derives from python-logstash library # with the accompanying LogstashHandler, derives from python-logstash library
@@ -36,6 +37,13 @@ def unused_callback(sess, resp):
pass pass
class HTTPSNullHandler(NullHandler):
"Placeholder null handler to allow loading without database access"
def __init__(self, host, **kwargs):
return super(HTTPSNullHandler, self).__init__()
class HTTPSHandler(logging.Handler): class HTTPSHandler(logging.Handler):
def __init__(self, fqdn=False, **kwargs): def __init__(self, fqdn=False, **kwargs):
super(HTTPSHandler, self).__init__() super(HTTPSHandler, self).__init__()

View File

@@ -825,6 +825,8 @@ TOWER_URL_BASE = "https://towerhost"
TOWER_SETTINGS_MANIFEST = {} TOWER_SETTINGS_MANIFEST = {}
LOG_AGGREGATOR_ENABLED = False
# Logging configuration. # Logging configuration.
LOGGING = { LOGGING = {
'version': 1, 'version': 1,
@@ -869,7 +871,7 @@ LOGGING = {
'formatter': 'simple', 'formatter': 'simple',
}, },
'http_receiver': { 'http_receiver': {
'class': 'awx.main.utils.handlers.HTTPSHandler', 'class': 'awx.main.utils.handlers.HTTPSNullHandler',
'level': 'INFO', 'level': 'INFO',
'formatter': 'json', 'formatter': 'json',
'host': '', 'host': '',