From: Christian Herdtweck Date: Fri, 9 Aug 2019 10:57:06 +0000 (+0200) Subject: Add option to add specified handlers to logger X-Git-Tag: v1.6.7~1^2~5 X-Git-Url: http://developer.intra2net.com/git/?p=pyi2ncommon;a=commitdiff_plain;h=87ed6b668ffca1dedb312682948d82c45be8a183 Add option to add specified handlers to logger --- diff --git a/src/log_helpers.py b/src/log_helpers.py index 3163971..39e1f41 100644 --- a/src/log_helpers.py +++ b/src/log_helpers.py @@ -191,7 +191,7 @@ class I2nLogger: def __init__(self, name, level=INFO, fmt=DEFAULT_SHORT_LEVEL_FORMAT, datefmt=DEFAULT_SHORT_LEVEL_DATE_FORMAT, - streams=STDOUT, files=None): + streams=STDOUT, files=None, handlers=None): """ creates a I2nLogger; forwards args to logging.getLogger @@ -204,7 +204,13 @@ class I2nLogger: :py:class:`ShortLevelFormatter` for more help :param streams: list/tuple of or a single stream to log to, default is STDOUT (=sys.stdout) + :type streams: (:py:class:`io.IOBase`) or [:py:class:`io.IOBase`) or + None :param files: list/tuple or single file name to log to + :type files: None or (str) or [str] + :param handlers: other handlers to customize and use with this logger + :type handlers: None or [:py:class:`logging.Handler`] or + (:py:class:`logging.Handler`) :raise: ValueError if an I2nLogger with the same name exists already """ @@ -251,6 +257,17 @@ class I2nLogger: new_handler.setLevel(self._level) self._log.addHandler(new_handler) + if handlers is None: + handlers = [] + elif not isinstance(handlers, (list, tuple)): + handlers = (handlers, ) + for handler in handlers: + formatter = ShortLevelFormatter(fmt=fmt, datefmt=datefmt) + formatter.add_level(NOTICE, 'note') + handler.setFormatter(formatter) + handler.setLevel(self._level) + self._log.addHandler(handler) + # remember that this logger is a I2nLogger _i2n_loggers[name] = self