Coverage for src/mkdocs_iframe/loggers.py: 92.86%
14 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-06 09:32 -0400
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-06 09:32 -0400
1"""Logging functions."""
3from __future__ import annotations
5import logging
6from typing import Any, MutableMapping
8from mkdocs.utils import warning_filter
11class LoggerAdapter(logging.LoggerAdapter):
12 """A logger adapter to prefix messages."""
14 def __init__(self, prefix: str, logger: logging.Logger):
15 """Initialize the object.
17 Arguments:
18 prefix: The string to insert in front of every message.
19 logger: The logger instance.
20 """
21 super().__init__(logger, {})
22 self.prefix = prefix
24 def process(self, msg: str, kwargs: MutableMapping[str, Any]) -> tuple[Any, MutableMapping[str, Any]]:
25 """Process the message.
27 Arguments:
28 msg: The message:
29 kwargs: Remaining arguments.
31 Returns:
32 The processed message, and the remaining arguments.
33 """
34 return f"{self.prefix}: {msg}", kwargs
37def get_logger(name: str) -> LoggerAdapter:
38 """Return a pre-configured logger.
40 Arguments:
41 name: The name to use with `logging.getLogger`.
43 Returns:
44 A logger configured to work well in MkDocs.
45 """
46 logger = logging.getLogger(f"mkdocs.plugins.{name}")
47 logger.addFilter(warning_filter)
48 return LoggerAdapter(name, logger)