Coverage for src/probable_fiesta/logger/logging_config.py: 66%

32 statements  

« prev     ^ index     » next       coverage.py v7.1.0, created at 2023-01-30 18:57 -0500

1"""Configuration file for logging.""" 

2import logging 

3 

4from ..config.variables import LoggerDef as ld 

5 

6# Catchall 

7if not ld.LEVEL: 

8 ld.LEVEL = logging.INFO 

9if not ld.NAME: 

10 ld.NAME = "main_log" 

11if not ld.FORMAT: 

12 ld.FORMAT = "simple" 

13 

14 

15def get_logger(log_name=ld.NAME): 

16 """Get a configured logger. 

17 :param log_name: Name of the logger 

18 """ 

19 logger = logging.getLogger(log_name) 

20 return logger 

21 

22# Create a simple logger in default directory "/Logger" 

23def set_logger(log_name=ld.NAME, log_level=ld.LEVEL, format=ld.FORMAT): 

24 """Create a simple logger in the default directory. 

25 :param log_name: Name of the logger and logger_name.log. 

26 :param log_level: logging.Debug, logging.Warning, etc. 

27 :param format: Formatter to use. See `set_formatter_format(option)`. 

28 :return: logger. 

29 """ 

30 # Create Logger with name and level 

31 logger = logging.getLogger(log_name) 

32 logger.setLevel(log_level) 

33 

34 # Define a formatter for the Logger (Defaults to simple) 

35 formatter = set_formatter_format(format) 

36 

37 # Set path of the logger using ROOT_DIR and log_name 

38 path = f"{ld.DIRECTORY}/{log_name}.log" 

39 print(f"Using {path} as the log file") 

40 

41 # Set the and formatter and fileHandler 

42 fileh = logging.FileHandler(path, 'a') 

43 fileh.setFormatter(formatter) 

44 logger.addHandler(fileh) 

45 

46 return logger # Return Logger 

47 

48 

49def set_formatter_format(option='simple'): 

50 """Choose a formatter from the following or create your own. 

51 `simple` - Time LoggerName Level - Message 

52 `process` - Time moduleName -> processId lineNo Level - Message 

53 `function` - Time moduleName funcName -> lineNo Level - Message 

54 :param options: simple, process, function, custom. 

55 :return: formatter to be set with `setFormatter`. 

56 """ 

57 # Check for valid input 

58 options = ['simple', 'process', 'function'] 

59 if option not in options: 

60 print("Input error!") 

61 raise ValueError 

62 # Define a simple formatter 

63 if option == 'simple': 

64 return logging.Formatter( 

65 '%(asctime)s - %(name)s - %(levelname)s - %(message)s') 

66 # Define a process formatter 

67 if option == 'process': 

68 return logging.Formatter( 

69 '%(asctime)s %(module)s -> %(process)d %(lineno)d %(levelname)s' + 

70 ' - %(message)s') 

71 # Define a function formatter 

72 if option == 'function': 

73 return logging.Formatter( 

74 '%(asctime)s %(module)s %(funcName)s -> %(lineno)d %(levelname)s' + 

75 ' - %(message)s')