| Total Complexity | 2 |
| Total Lines | 39 |
| Duplicated Lines | 0 % |
| Coverage | 50% |
| Changes | 0 | ||
| 1 | """ |
||
| 2 | weitersager.util |
||
| 3 | ~~~~~~~~~~~~~~~~ |
||
| 4 | |||
| 5 | Utilities |
||
| 6 | |||
| 7 | :Copyright: 2007-2024 Jochen Kupperschmidt |
||
| 8 | :License: MIT, see LICENSE for details. |
||
| 9 | """ |
||
| 10 | |||
| 11 | 1 | from __future__ import annotations |
|
| 12 | 1 | import logging |
|
| 13 | 1 | from logging import Formatter, StreamHandler |
|
| 14 | 1 | from threading import Thread |
|
| 15 | 1 | from typing import Callable |
|
| 16 | |||
| 17 | |||
| 18 | 1 | def configure_logging(level: str) -> None: |
|
| 19 | """Configure application-specific loggers. |
||
| 20 | |||
| 21 | Setting the log level does not affect dependencies' loggers. |
||
| 22 | """ |
||
| 23 | # Get the parent logger of all application-specific |
||
| 24 | # loggers defined in the package's modules. |
||
| 25 | pkg_logger = logging.getLogger(__package__) |
||
| 26 | |||
| 27 | # Configure handler that writes to STDERR. |
||
| 28 | handler = StreamHandler() |
||
| 29 | handler.setFormatter(Formatter('%(asctime)s %(levelname)-8s %(message)s')) |
||
| 30 | pkg_logger.addHandler(handler) |
||
| 31 | |||
| 32 | pkg_logger.setLevel(level) |
||
| 33 | |||
| 34 | |||
| 35 | 1 | def start_thread(target: Callable, name: str | None = None) -> None: |
|
| 36 | """Create, configure, and start a new thread.""" |
||
| 37 | t = Thread(target=target, name=name, daemon=True) |
||
| 38 | t.start() |
||
| 39 |