|
3 | 3 |
|
4 | 4 | import logging as _logging |
5 | 5 |
|
6 | | -from getpass import getpass |
| 6 | +from getpass import getpass as _getpass |
| 7 | +from typing import Sequence as _Sequence, Union as _Union |
7 | 8 | from logging import raiseExceptions as _raiseExceptions |
8 | 9 |
|
9 | 10 | import log21 as _log21 |
|
13 | 14 |
|
14 | 15 |
|
15 | 16 | class Logger(_logging.Logger): |
16 | | - def __init__(self, name, level=NOTSET): |
| 17 | + def __init__(self, name, level=NOTSET, handlers: _Union[_Sequence[_logging.Handler], _logging.Handler] = None): |
17 | 18 | super().__init__(name, level) |
18 | 19 | self.setLevel(level) |
19 | 20 | self._progress_bar = None |
| 21 | + if handlers: |
| 22 | + if not isinstance(handlers, _Sequence): |
| 23 | + if isinstance(handlers, _logging.Handler): |
| 24 | + handlers = [handlers] |
| 25 | + else: |
| 26 | + raise TypeError("handlers must be a list of logging.Handler objects") |
| 27 | + for handler in handlers: |
| 28 | + self.addHandler(handler) |
20 | 29 |
|
21 | 30 | def isEnabledFor(self, level): |
22 | 31 | """ |
@@ -164,7 +173,7 @@ def getpass(self, *msg, args: tuple = (), end='', **kwargs): |
164 | 173 | """ |
165 | 174 | msg = ' '.join([str(m) for m in msg]) + end |
166 | 175 | self._log(self.level if self.level >= NOTSET else NOTSET, msg, args, **kwargs) |
167 | | - return getpass('') |
| 176 | + return _getpass('') |
168 | 177 |
|
169 | 178 | def print_progress(self, progress: float, total: float): |
170 | 179 | """ |
|
0 commit comments