Configure the glmocr package logging. Args: level: Log level ("DEBUG", "INFO", "WARNING", "ERROR"). format_string: Custom format string. If None, uses default based on level.
(
level: str = "INFO",
format_string: Optional[str] = None,
*,
_source: str = "explicit",
)
| 99 | |
| 100 | |
| 101 | def configure_logging( |
| 102 | level: str = "INFO", |
| 103 | format_string: Optional[str] = None, |
| 104 | *, |
| 105 | _source: str = "explicit", |
| 106 | ) -> None: |
| 107 | """Configure the glmocr package logging. |
| 108 | |
| 109 | Args: |
| 110 | level: Log level ("DEBUG", "INFO", "WARNING", "ERROR"). |
| 111 | format_string: Custom format string. If None, uses default based on level. |
| 112 | """ |
| 113 | global _configured, _configured_source |
| 114 | |
| 115 | # Get or create package logger |
| 116 | logger = logging.getLogger(_PACKAGE_LOGGER_NAME) |
| 117 | |
| 118 | # Parse level |
| 119 | level_value = getattr(logging, level.upper(), logging.INFO) |
| 120 | logger.setLevel(level_value) |
| 121 | |
| 122 | # Remove existing handlers |
| 123 | logger.handlers.clear() |
| 124 | |
| 125 | # Create handler |
| 126 | handler = logging.StreamHandler() |
| 127 | handler.setLevel(level_value) |
| 128 | |
| 129 | # Set format |
| 130 | if format_string is None: |
| 131 | format_string = _DEBUG_FORMAT if level_value == logging.DEBUG else _INFO_FORMAT |
| 132 | |
| 133 | formatter = logging.Formatter(format_string) |
| 134 | handler.setFormatter(formatter) |
| 135 | logger.addHandler(handler) |
| 136 | |
| 137 | # Prevent propagation to root logger |
| 138 | logger.propagate = False |
| 139 | |
| 140 | _configured = True |
| 141 | _configured_source = _source |
| 142 | |
| 143 | |
| 144 | def get_logger(name: str) -> logging.Logger: |
no outgoing calls
no test coverage detected