Merge "Install a qualified except hook."
This commit is contained in:
commit
bcb424dd73
@ -257,16 +257,18 @@ class PublishErrorsHandler(logging.Handler):
|
||||
dict(error=record.msg))
|
||||
|
||||
|
||||
def handle_exception(type, value, tb):
|
||||
extra = {}
|
||||
if CONF.verbose:
|
||||
extra['exc_info'] = (type, value, tb)
|
||||
getLogger().critical(str(value), **extra)
|
||||
def _create_logging_excepthook(product_name):
|
||||
def logging_excepthook(type, value, tb):
|
||||
extra = {}
|
||||
if CONF.verbose:
|
||||
extra['exc_info'] = (type, value, tb)
|
||||
getLogger(product_name).critical(str(value), **extra)
|
||||
return logging_excepthook
|
||||
|
||||
|
||||
def setup(product_name):
|
||||
"""Setup logging."""
|
||||
sys.excepthook = handle_exception
|
||||
sys.excepthook = _create_logging_excepthook(product_name)
|
||||
|
||||
if CONF.log_config:
|
||||
try:
|
||||
|
@ -1,7 +1,9 @@
|
||||
import cStringIO
|
||||
import exceptions
|
||||
import logging
|
||||
import subprocess
|
||||
import sys
|
||||
import textwrap
|
||||
|
||||
from openstack.common import context
|
||||
from openstack.common import cfg
|
||||
@ -219,6 +221,31 @@ class LegacyFormatterTestCase(test_utils.BaseTestCase):
|
||||
self.assertEqual("NOCTXT: baz --DBG\n", self.stream.getvalue())
|
||||
|
||||
|
||||
class ExceptionLoggingTestCase(test_utils.BaseTestCase):
|
||||
"""Test that Exceptions are logged"""
|
||||
|
||||
def test_excepthook_logs_exception(self):
|
||||
code = textwrap.dedent("""
|
||||
import sys
|
||||
from openstack.common import log as logging
|
||||
|
||||
logging.setup('somename')
|
||||
raise Exception('Some error happened')
|
||||
""")
|
||||
|
||||
child = subprocess.Popen([
|
||||
sys.executable, "-"],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
|
||||
(out, err) = child.communicate(input=code)
|
||||
|
||||
self.assertTrue(
|
||||
"CRITICAL somename [-] Some error happened",
|
||||
msg="Exception is not logged")
|
||||
|
||||
|
||||
class FancyRecordTestCase(test_utils.BaseTestCase):
|
||||
"""Test how we handle fancy record keys that are not in the
|
||||
base python logging"""
|
||||
|
Loading…
Reference in New Issue
Block a user