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

1"""Logging configuration for ANFIS toolbox.""" 

2 

3import logging 

4import sys 

5 

6 

7def setup_logging(level: str = "INFO", format_string: str | None = None) -> None: 

8 """Setup logging configuration for ANFIS toolbox. 

9 

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" 

16 

17 # Configure the root logger for anfis_toolbox 

18 logger = logging.getLogger("anfis_toolbox") 

19 logger.setLevel(getattr(logging, level.upper())) 

20 

21 # Remove existing handlers to avoid duplicates 

22 for handler in logger.handlers[:]: 

23 logger.removeHandler(handler) 

24 

25 # Create console handler 

26 handler = logging.StreamHandler(sys.stdout) 

27 handler.setLevel(getattr(logging, level.upper())) 

28 

29 # Create formatter 

30 formatter = logging.Formatter(format_string) 

31 handler.setFormatter(formatter) 

32 

33 # Add handler to logger 

34 logger.addHandler(handler) 

35 

36 # Prevent propagation to root logger to avoid duplicate messages 

37 logger.propagate = False 

38 

39 

40def enable_training_logs() -> None: 

41 """Enable training progress logs with a simple format.""" 

42 setup_logging(level="INFO", format_string="%(message)s") 

43 

44 

45def disable_training_logs() -> None: 

46 """Disable training progress logs.""" 

47 logger = logging.getLogger("anfis_toolbox") 

48 logger.setLevel(logging.WARNING)