# HG changeset patch # User Goffi # Date 1399569080 -7200 # Node ID 0ea97f483464d2a34324b2f3891e56020db39726 # Parent 0c361fdc76af1878bc3f28146cef19506a36bfb9 core (log): added "custom" backend diff -r 0c361fdc76af -r 0ea97f483464 src/core/constants.py --- a/src/core/constants.py Thu May 08 17:16:15 2014 +0200 +++ b/src/core/constants.py Thu May 08 19:11:20 2014 +0200 @@ -77,6 +77,7 @@ LOG_BACKEND_STANDARD = 'standard' LOG_BACKEND_TWISTED = 'twisted' LOG_BACKEND_BASIC = 'basic' + LOG_BACKEND_CUSTOM = 'custom' LOG_BASE_LOGGER = 'root' LOG_TWISTED_LOGGER = 'twisted' LOG_OPT_SECTION = 'DEFAULT' # section of sat.conf where log options should be diff -r 0c361fdc76af -r 0ea97f483464 src/core/log.py --- a/src/core/log.py Thu May 08 17:16:15 2014 +0200 +++ b/src/core/log.py Thu May 08 19:11:20 2014 +0200 @@ -242,7 +242,7 @@ class Configure(object): - LOGGER_CLASS = None + LOGGER_CLASS = Logger def __init__(self, level=None, fmt=None, output=None, logger=None, colors=False, force_colors=False): """Configure backend @@ -524,6 +524,13 @@ self.log_publisher._originalAddObserver(twistedObserver) +class ConfigureCustom(ConfigureBasic): + LOGGER_CLASS = None + + def __init__(self, logger_class, *args, **kwargs): + ConfigureCustom.LOGGER_CLASS = logger_class + + class ConfigureStandard(Configure): def __init__(self, level=None, fmt=None, output=None, logger=None, colors=False, force_colors=False): @@ -632,6 +639,7 @@ C.LOG_BACKEND_STANDARD: use standard logging module C.LOG_BACKEND_TWISTED: use twisted logging module (with standard logging observer) C.LOG_BACKEND_BASIC: use a basic print based logging + C.LOG_BACKEND_CUSTOM: use a given Logger subclass """ global _backend if _backend is not None: @@ -647,6 +655,10 @@ elif backend == C.LOG_BACKEND_STANDARD: ConfigureStandard(**options) + elif backend == C.LOG_BACKEND_CUSTOM: + logger_class = options.pop('logger_class') + ConfigureCustom(logger_class, **options) + else: raise ValueError("unknown backend") @@ -704,9 +716,11 @@ def getLogger(name=C.LOG_BASE_LOGGER): if _backend in (None, C.LOG_BACKEND_BASIC): - logger_class = Logger + logger_class = ConfigureBasic.LOGGER_CLASS elif _backend == C.LOG_BACKEND_TWISTED: - logger_class = TwistedLogger + logger_class = ConfigureTwisted.LOGGER_CLASS + elif _backend == C.LOG_BACKEND_CUSTOM: + logger_class = ConfigureCustom.LOGGER_CLASS else: raise ValueError("This method should not be called with backend [%s]" % _backend) return _loggers.setdefault(name, logger_class(name))