85cd488bef
Signed-off-by: Dean Troyer <dtroyer@gmail.com>
64 lines
1.5 KiB
Python
64 lines
1.5 KiB
Python
#
|
|
# Copyright (c) 2015-2016 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
import os
|
|
import logging
|
|
import inspect
|
|
from oslo_config import cfg
|
|
from logging.handlers import SysLogHandler
|
|
|
|
conf_opts = [
|
|
cfg.BoolOpt('debug',
|
|
default=False,
|
|
help='Print debugging output (set logging level to '
|
|
'DEBUG instead of default INFO level).'),
|
|
]
|
|
|
|
CONF = cfg.CONF
|
|
CONF.register_opts(conf_opts)
|
|
|
|
|
|
def _get_binary_name():
|
|
return os.path.basename(inspect.stack()[-1][1])
|
|
|
|
|
|
class ProxySysLogHandler(SysLogHandler):
|
|
def __init__(self, app, *args, **kwargs):
|
|
self.binary_name = _get_binary_name()
|
|
self.app = app
|
|
SysLogHandler.__init__(self, *args, **kwargs)
|
|
|
|
def format(self, record):
|
|
msg = logging.handlers.SysLogHandler.format(self, record)
|
|
return self.binary_name + '(' + self.app + ')' + ': ' + msg
|
|
|
|
_loggers = {}
|
|
|
|
|
|
def _set_log_level(logger, debug):
|
|
if debug:
|
|
logger.setLevel(logging.DEBUG)
|
|
else:
|
|
logger.setLevel(logging.INFO)
|
|
|
|
|
|
def toggle_debug_log(debug):
|
|
for k in _loggers.keys():
|
|
_set_log_level(_loggers[k], debug)
|
|
|
|
|
|
def getLogger(name='unknown'):
|
|
if name not in _loggers:
|
|
_loggers[name] = logging.getLogger(name)
|
|
|
|
_set_log_level(_loggers[name], CONF.debug)
|
|
|
|
syslog = ProxySysLogHandler(name, address='/dev/log',
|
|
facility=SysLogHandler.LOG_LOCAL5)
|
|
_loggers[name].addHandler(syslog)
|
|
|
|
return _loggers[name]
|