From 368c89664ba9ac8a634e53167e9490002451808e Mon Sep 17 00:00:00 2001 From: drewwalters96 Date: Thu, 15 Jun 2017 09:45:43 -0500 Subject: [PATCH] [WIP][Feat] Add support for Oslo logging capabilities - Add 'oslo.log' package to requirements.txt - Replace Python logging library with Oslo logging library in server.py and log.py - Update iso8601 silencincing to default option --- armada/handlers/armada.py | 11 +++++- armada/log.py | 78 +++++++++------------------------------ armada/shell.py | 2 - requirements.txt | 1 + server.py | 9 ++++- 5 files changed, 36 insertions(+), 65 deletions(-) diff --git a/armada/handlers/armada.py b/armada/handlers/armada.py index 87c7a639..27b97e0c 100644 --- a/armada/handlers/armada.py +++ b/armada/handlers/armada.py @@ -14,7 +14,9 @@ import difflib import yaml -import logging + +from oslo_config import cfg +from oslo_log import log as logging from supermutes.dot import dotify @@ -24,6 +26,13 @@ from ..utils.release import release_prefix from ..utils import git from ..utils import lint +LOG = logging.getLogger(__name__) +CONF = cfg.CONF +DOMAIN = "armada" + +logging.register_options(CONF) +logging.setup(CONF, DOMAIN) + LOG = logging.getLogger(__name__) class Armada(object): diff --git a/armada/log.py b/armada/log.py index 6f1a7cb2..dd61e996 100644 --- a/armada/log.py +++ b/armada/log.py @@ -12,73 +12,29 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os -import logging -import string -import sys - -if sys.version_info < (2, 7): - import functools - - @functools.wraps(logging.Formatter.format) - def new_format(self, record, string=string, - old_format=logging.Formatter.format): - if string.find is None: - string.find = str.find - return old_format(self, record) - logging.Formatter.format = new_format - - -class ColorFormatter(logging.Formatter): - LEVEL_COLORS = { - logging.DEBUG: '\033[00;32m', # GREEN - logging.INFO: '\033[00;36m', # CYAN - logging.WARN: '\033[01;33m', # BOLD YELLOW - logging.ERROR: '\033[01;31m', # BOLD RED - logging.CRITICAL: '\033[01;31m', # BOLD RED - } - - def format(self, record, Formatter=logging.Formatter): - # Hack to get last log line instead of exception on 2.6 - res = Formatter.format(self, record) # old-style class on 2.6 - return self.LEVEL_COLORS[record.levelno] + res + '\033[m' +from oslo_config import cfg +from oslo_log import log as logging +CONF = cfg.CONF +DOMAIN = "armada" def set_console_formatter(**formatter_kwargs): formatter_kwargs.setdefault( 'fmt', '%(asctime)s %(name)-12s %(levelname)-8s %(message)s') formatter_kwargs.setdefault('datefmt', '%m-%d %H:%M') - root_logger = logging.getLogger('') - cliff_log = logging.getLogger('cliff') - stevedore_log = logging.getLogger('stevedore') - iso8601_log = logging.getLogger("iso8601") + # Specify default log levels + custom_log_level_defaults = [ + 'root=INFO', + 'cliff=INFO', + 'stevedore=INFO', + 'iso8601=INFO' + ] - log_dir = os.path.expanduser('~/.armada') - if not os.path.exists(log_dir): - os.makedirs(log_dir) + logging.set_defaults( + default_log_levels=logging.get_default_log_levels() + + custom_log_level_defaults) - file_logger = logging.FileHandler(filename=str(log_dir + '/armada.log')) - root_logger.addHandler(file_logger) - - cliff_log.setLevel(logging.INFO) - stevedore_log.setLevel(logging.INFO) - iso8601_log.setLevel(logging.INFO) - - for handler in root_logger.handlers: - if handler.__class__ is logging.StreamHandler: # Skip subclasses - console_handler = handler - # Skip if not a tty (default ssh, redirect, ...) - isatty = getattr(handler.stream, 'isatty', None) - if isatty is None or not isatty(): - continue - break - else: - return # Didn't find any suitable StreamHandlers there - formatter = ColorFormatter(**formatter_kwargs) - console_handler.setFormatter(formatter) - - -def silence_iso8601(): - iso8601_logger = logging.getLogger('iso8601') - iso8601_logger.setLevel(logging.INFO) + # Setup logging configuration + logging.register_options(CONF) + logging.setup(CONF, DOMAIN) diff --git a/armada/shell.py b/armada/shell.py index 22f55b20..6b839d8c 100644 --- a/armada/shell.py +++ b/armada/shell.py @@ -36,8 +36,6 @@ class ArmadaApp(app.App): def configure_logging(self): super(ArmadaApp, self).configure_logging() log.set_console_formatter() - log.silence_iso8601() - def main(argv=None): if argv is None: diff --git a/requirements.txt b/requirements.txt index 2e0f8937..19a6aa00 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,7 @@ grpc==0.3.post19 grpcio==1.1.3 grpcio-tools==1.1.3 kubernetes==1.0.0 +oslo.log==3.28.0 protobuf==3.2.0 PyYAML==3.12 requests==2.17.3 diff --git a/server.py b/server.py index f34a79c2..0fa845a9 100644 --- a/server.py +++ b/server.py @@ -14,15 +14,22 @@ # -import logging import falcon import json from falcon import HTTP_200 +from oslo_config import cfg +from oslo_log import log as logging + from armada.handlers.tiller import Tiller as tillerHandler from armada.handlers.armada import Armada as armadaHandler LOG = logging.getLogger(__name__) +CONF = cfg.CONF +DOMAIN = "armada" + +logging.register_options(CONF) +logging.setup(CONF, DOMAIN) class Tiller(object): '''