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
: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
"""
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