Merge "Fix logging traceback in service logs"

This commit is contained in:
Jenkins 2016-12-20 16:59:30 +00:00 committed by Gerrit Code Review
commit 904bba495d

View File

@ -14,6 +14,7 @@ import os
from oslo_log import log as logging
# For more information please visit: https://wiki.openstack.org/wiki/TaskFlow
from taskflow import formatters
from taskflow.listeners import base
from taskflow.listeners import logging as logging_listener
from taskflow import task
@ -47,6 +48,23 @@ class CinderTask(task.Task):
return _make_task_name(cls, addons)
class SpecialFormatter(formatters.FailureFormatter):
#: Exception is an excepted case, don't include traceback in log if fails.
_NO_TRACE_EXCEPTIONS = (exception.InvalidInput, exception.QuotaError)
def __init__(self, engine):
super(SpecialFormatter, self).__init__(engine)
def format(self, fail, atom_matcher):
if fail.check(*self._NO_TRACE_EXCEPTIONS) is not None:
exc_info = None
exc_details = '%s%s' % (os.linesep, fail.pformat(traceback=False))
return (exc_info, exc_details)
else:
return super(SpecialFormatter, self).format(fail, atom_matcher)
class DynamicLogListener(logging_listener.DynamicLoggingListener):
"""This is used to attach to taskflow engines while they are running.
@ -56,9 +74,6 @@ class DynamicLogListener(logging_listener.DynamicLoggingListener):
and more...
"""
#: Exception is an excepted case, don't include traceback in log if fails.
_NO_TRACE_EXCEPTIONS = (exception.InvalidInput, exception.QuotaError)
def __init__(self, engine,
task_listen_for=base.DEFAULT_LISTEN_FOR,
flow_listen_for=base.DEFAULT_LISTEN_FOR,
@ -69,12 +84,4 @@ class DynamicLogListener(logging_listener.DynamicLoggingListener):
task_listen_for=task_listen_for,
flow_listen_for=flow_listen_for,
retry_listen_for=retry_listen_for,
log=logger)
def _format_failure(self, fail):
if fail.check(*self._NO_TRACE_EXCEPTIONS) is not None:
exc_info = None
exc_details = '%s%s' % (os.linesep, fail.pformat(traceback=False))
return (exc_info, exc_details)
else:
return super(DynamicLogListener, self)._format_failure(fail)
log=logger, fail_formatter=SpecialFormatter(engine))