Remove the notifier and its dependencies from log.py
Move the code related to the publish error handler out of the log module so its easier for other projects to consume it Fixes LP #1179528 Change-Id: Ibf28ba17f81b5ddeda653f6a3501ecac18ffcd42
This commit is contained in:
@@ -43,9 +43,9 @@ import traceback
|
||||
from oslo.config import cfg
|
||||
|
||||
from openstack.common.gettextutils import _
|
||||
from openstack.common import importutils
|
||||
from openstack.common import jsonutils
|
||||
from openstack.common import local
|
||||
from openstack.common import notifier
|
||||
|
||||
|
||||
_DEFAULT_LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
|
||||
@@ -322,17 +322,6 @@ class JSONFormatter(logging.Formatter):
|
||||
return jsonutils.dumps(message)
|
||||
|
||||
|
||||
class PublishErrorsHandler(logging.Handler):
|
||||
def emit(self, record):
|
||||
if ('openstack.common.notifier.log_notifier' in
|
||||
CONF.notification_driver):
|
||||
return
|
||||
notifier.api.notify(None, 'error.publisher',
|
||||
'error_notification',
|
||||
notifier.api.ERROR,
|
||||
dict(error=record.msg))
|
||||
|
||||
|
||||
def _create_logging_excepthook(product_name):
|
||||
def logging_excepthook(type, value, tb):
|
||||
extra = {}
|
||||
@@ -428,7 +417,10 @@ def _setup_logging_from_conf():
|
||||
log_root.addHandler(streamlog)
|
||||
|
||||
if CONF.publish_errors:
|
||||
log_root.addHandler(PublishErrorsHandler(logging.ERROR))
|
||||
handler = importutils.import_object(
|
||||
"openstack.common.log_handler.PublishErrorsHandler",
|
||||
logging.ERROR)
|
||||
log_root.addHandler(handler)
|
||||
|
||||
datefmt = CONF.log_date_format
|
||||
for handler in log_root.handlers:
|
||||
|
||||
31
openstack/common/log_handler.py
Normal file
31
openstack/common/log_handler.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||
|
||||
# Copyright 2013 IBM Corp.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
import logging
|
||||
|
||||
from openstack.common import notifier
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
|
||||
class PublishErrorsHandler(logging.Handler):
|
||||
def emit(self, record):
|
||||
if ('openstack.common.notifier.log_notifier' in
|
||||
cfg.CONF.notification_driver):
|
||||
return
|
||||
notifier.api.notify(None, 'error.publisher',
|
||||
'error_notification',
|
||||
notifier.api.ERROR,
|
||||
dict(error=record.msg))
|
||||
@@ -10,6 +10,7 @@ from oslo.config import cfg
|
||||
from openstack.common import context
|
||||
from openstack.common import jsonutils
|
||||
from openstack.common import log
|
||||
from openstack.common.log_handler import PublishErrorsHandler
|
||||
from openstack.common.notifier import api as notifier
|
||||
from tests import utils as test_utils
|
||||
|
||||
@@ -114,7 +115,7 @@ class PublishErrorsHandlerTestCase(test_utils.BaseTestCase):
|
||||
"""Tests for log.PublishErrorsHandler"""
|
||||
def setUp(self):
|
||||
super(PublishErrorsHandlerTestCase, self).setUp()
|
||||
self.publiserrorshandler = log.PublishErrorsHandler(logging.ERROR)
|
||||
self.publiserrorshandler = PublishErrorsHandler(logging.ERROR)
|
||||
|
||||
def test_emit_cfg_log_notifier_in_notifier_drivers(self):
|
||||
self.config(notification_driver=[
|
||||
|
||||
Reference in New Issue
Block a user