Coverage for anfis_toolbox / logging_config.py: 100%
20 statements
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-05 18:47 -0300
« prev ^ index » next coverage.py v7.13.3, created at 2026-02-05 18:47 -0300
1"""Logging configuration for ANFIS toolbox."""
3import logging
4import sys
7def setup_logging(level: str = "INFO", format_string: str | None = None) -> None:
8 """Setup logging configuration for ANFIS toolbox.
10 Parameters:
11 level (str): Logging level ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL').
12 format_string (str, optional): Custom format string for log messages.
13 """
14 if format_string is None:
15 format_string = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
17 # Configure the root logger for anfis_toolbox
18 logger = logging.getLogger("anfis_toolbox")
19 logger.setLevel(getattr(logging, level.upper()))
21 # Remove existing handlers to avoid duplicates
22 for handler in logger.handlers[:]:
23 logger.removeHandler(handler)
25 # Create console handler
26 handler = logging.StreamHandler(sys.stdout)
27 handler.setLevel(getattr(logging, level.upper()))
29 # Create formatter
30 formatter = logging.Formatter(format_string)
31 handler.setFormatter(formatter)
33 # Add handler to logger
34 logger.addHandler(handler)
36 # Prevent propagation to root logger to avoid duplicate messages
37 logger.propagate = False
40def enable_training_logs() -> None:
41 """Enable training progress logs with a simple format."""
42 setup_logging(level="INFO", format_string="%(message)s")
45def disable_training_logs() -> None:
46 """Disable training progress logs."""
47 logger = logging.getLogger("anfis_toolbox")
48 logger.setLevel(logging.WARNING)