mirror of
https://github.com/thegeeklab/ansible-later.git
synced 2024-11-25 22:30:42 +00:00
add some details to json logs
This commit is contained in:
parent
4f33afff3e
commit
fa14538f20
@ -12,6 +12,7 @@ import ansible
|
|||||||
|
|
||||||
from ansiblelater import LOG
|
from ansiblelater import LOG
|
||||||
from ansiblelater import utils
|
from ansiblelater import utils
|
||||||
|
from ansiblelater.logger import flag_extra
|
||||||
from ansiblelater.command.review import Error
|
from ansiblelater.command.review import Error
|
||||||
from ansiblelater.exceptions import ( # noqa
|
from ansiblelater.exceptions import ( # noqa
|
||||||
LaterError, LaterAnsibleError
|
LaterError, LaterAnsibleError
|
||||||
@ -127,19 +128,19 @@ class Candidate(object):
|
|||||||
|
|
||||||
if not standard.version:
|
if not standard.version:
|
||||||
LOG.warn("{id}Best practice '{name}' not met:\n{path}:{error}".format(
|
LOG.warn("{id}Best practice '{name}' not met:\n{path}:{error}".format(
|
||||||
id=standard.id, name=standard.name, path=self.path, error=err), extra=err_labels)
|
id=standard.id, name=standard.name, path=self.path, error=err), extra=flag_extra(err_labels))
|
||||||
elif LooseVersion(standard.version) > LooseVersion(self.version):
|
elif LooseVersion(standard.version) > LooseVersion(self.version):
|
||||||
LOG.warn("{id}Future standard '{name}' not met:\n{path}:{error}".format(
|
LOG.warn("{id}Future standard '{name}' not met:\n{path}:{error}".format(
|
||||||
id=standard.id, name=standard.name, path=self.path, error=err), extra=err_labels)
|
id=standard.id, name=standard.name, path=self.path, error=err), extra=flag_extra(err_labels))
|
||||||
else:
|
else:
|
||||||
LOG.error("{id}Standard '{name}' not met:\n{path}:{error}".format(
|
LOG.error("{id}Standard '{name}' not met:\n{path}:{error}".format(
|
||||||
id=standard.id, name=standard.name, path=self.path, error=err), extra=err_labels)
|
id=standard.id, name=standard.name, path=self.path, error=err), extra=flag_extra(err_labels))
|
||||||
errors = errors + 1
|
errors = errors + 1
|
||||||
if not result.errors:
|
if not result.errors:
|
||||||
if not standard.version:
|
if not standard.version:
|
||||||
LOG.info("Best practice '%s' met" % standard.name, extra=labels)
|
LOG.info("Best practice '%s' met" % standard.name, extra=flag_extra(labels))
|
||||||
elif LooseVersion(standard.version) > LooseVersion(self.version):
|
elif LooseVersion(standard.version) > LooseVersion(self.version):
|
||||||
LOG.info("Future standard '%s' met" % standard.name, extra=labels)
|
LOG.info("Future standard '%s' met" % standard.name, extra=flag_extra(labels))
|
||||||
else:
|
else:
|
||||||
LOG.info("Standard '%s' met" % standard.name)
|
LOG.info("Standard '%s' met" % standard.name)
|
||||||
|
|
||||||
|
@ -5,11 +5,12 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
import colorama
|
import colorama
|
||||||
|
from six import iteritems
|
||||||
from ansible.module_utils.parsing.convert_bool import boolean as to_bool
|
from ansible.module_utils.parsing.convert_bool import boolean as to_bool
|
||||||
from pythonjsonlogger import jsonlogger
|
from pythonjsonlogger import jsonlogger
|
||||||
|
|
||||||
CONSOLE_FORMAT = "%(levelname)s: %(message)s"
|
CONSOLE_FORMAT = "%(levelname)s: %(message)s"
|
||||||
JSON_FORMAT = "(levelname) (message) (asctime)"
|
JSON_FORMAT = "(levelname) (asctime)"
|
||||||
|
|
||||||
|
|
||||||
def _should_do_markup():
|
def _should_do_markup():
|
||||||
@ -23,18 +24,23 @@ def _should_do_markup():
|
|||||||
|
|
||||||
colorama.init(autoreset=True, strip=not _should_do_markup())
|
colorama.init(autoreset=True, strip=not _should_do_markup())
|
||||||
|
|
||||||
|
clashing_keywords = {key for key in dir(logging.LogRecord(None, None, "", 0, "", (), None, None)) if "__" not in key}
|
||||||
|
additional_clashing_keywords = {
|
||||||
|
"message",
|
||||||
|
"asctime"
|
||||||
|
}
|
||||||
|
clashing_keywords = clashing_keywords.union(additional_clashing_keywords)
|
||||||
|
|
||||||
def OverwriteMakeRecord(self, name, level, fn, lno, msg, args, exc_info, func=None, extra=None):
|
|
||||||
"""
|
def flag_extra(kwargs):
|
||||||
A factory method which can be overridden in subclasses to create
|
"""Ensure kwargs not conflict with the logging module."""
|
||||||
specialized LogRecords.
|
assert isinstance(kwargs, dict)
|
||||||
"""
|
|
||||||
rv = logging.LogRecord(name, level, fn, lno, msg, args, exc_info, func)
|
flagged = dict()
|
||||||
if extra is not None:
|
for key, value in iteritems(kwargs):
|
||||||
for key in extra:
|
flagged["later_" + key] = value
|
||||||
rv.__dict__[key] = extra[key]
|
|
||||||
print("xxx", rv.__dict__)
|
return flagged
|
||||||
return rv
|
|
||||||
|
|
||||||
|
|
||||||
class LogFilter(object):
|
class LogFilter(object):
|
||||||
@ -66,7 +72,6 @@ def get_logger(name=None, level=logging.DEBUG, json=False):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
logger = logging.getLogger(name)
|
logger = logging.getLogger(name)
|
||||||
logger.makeRecord(OverwriteMakeRecord)
|
|
||||||
logger.setLevel(level)
|
logger.setLevel(level)
|
||||||
logger.addHandler(_get_error_handler(json=json))
|
logger.addHandler(_get_error_handler(json=json))
|
||||||
logger.addHandler(_get_warn_handler(json=json))
|
logger.addHandler(_get_warn_handler(json=json))
|
||||||
|
@ -490,6 +490,8 @@ def parse_yaml_linenumbers(data, filename):
|
|||||||
data = loader.get_single_data()
|
data = loader.get_single_data()
|
||||||
except (yaml.parser.ParserError, yaml.scanner.ScannerError) as e:
|
except (yaml.parser.ParserError, yaml.scanner.ScannerError) as e:
|
||||||
raise LaterError("syntax error", e)
|
raise LaterError("syntax error", e)
|
||||||
|
except (yaml.composer.ComposerError) as e:
|
||||||
|
raise LaterError("syntax error", e)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user