925eb734a9
Back in liberty we marked this driver as deprecated. This patch removes it from the tree. The patch also removes tests, options and other references in the documentation. Note that one script is being kept because it's required by the amqp driver. Depends-On: If4b1773334e424d1f4a4e112bd1f10aca62682a9 Change-Id: I4a9cba314c4a2f24307504fa7b5427424268b114
84 lines
2.6 KiB
Python
84 lines
2.6 KiB
Python
# Copyright 2013 eNovance
|
|
#
|
|
# 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.
|
|
"""
|
|
Driver for the Python logging package that sends log records as a notification.
|
|
"""
|
|
import logging
|
|
|
|
from oslo_config import cfg
|
|
|
|
from oslo_messaging.notify import notifier
|
|
|
|
|
|
class LoggingNotificationHandler(logging.Handler):
|
|
"""Handler for logging to the messaging notification system.
|
|
|
|
Each time the application logs a message using the :py:mod:`logging`
|
|
module, it will be sent as a notification. The severity used for the
|
|
notification will be the same as the one used for the log record.
|
|
|
|
This can be used into a Python logging configuration this way::
|
|
|
|
[handler_notifier]
|
|
class=oslo_messaging.LoggingNotificationHandler
|
|
level=ERROR
|
|
args=('rabbit:///')
|
|
|
|
"""
|
|
|
|
CONF = cfg.CONF
|
|
"""Default configuration object used, subclass this class if you want to
|
|
use another one.
|
|
|
|
"""
|
|
|
|
def __init__(self, url, publisher_id=None, driver=None,
|
|
topic=None, serializer=None):
|
|
self.notifier = notifier.Notifier(
|
|
notifier.get_notification_transport(self.CONF, url),
|
|
publisher_id, driver,
|
|
topic,
|
|
serializer() if serializer else None)
|
|
logging.Handler.__init__(self)
|
|
|
|
def emit(self, record):
|
|
"""Emit the log record to the messaging notification system.
|
|
|
|
:param record: A log record to emit.
|
|
|
|
"""
|
|
method = getattr(self.notifier, record.levelname.lower(), None)
|
|
|
|
if not method:
|
|
return
|
|
|
|
method(
|
|
{},
|
|
'logrecord',
|
|
{
|
|
'name': record.name,
|
|
'levelno': record.levelno,
|
|
'levelname': record.levelname,
|
|
'exc_info': record.exc_info,
|
|
'pathname': record.pathname,
|
|
'lineno': record.lineno,
|
|
'msg': record.getMessage(),
|
|
'funcName': record.funcName,
|
|
'thread': record.thread,
|
|
'processName': record.processName,
|
|
'process': record.process,
|
|
'extra': getattr(record, 'extra', None),
|
|
}
|
|
)
|