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
« prev ^ index » next coverage.py v7.1.0, created at 2023-01-30 18:57 -0500
1"""Configuration file for logging."""
2import logging
4from ..config.variables import LoggerDef as ld
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"
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
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)
34 # Define a formatter for the Logger (Defaults to simple)
35 formatter = set_formatter_format(format)
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")
41 # Set the and formatter and fileHandler
42 fileh = logging.FileHandler(path, 'a')
43 fileh.setFormatter(formatter)
44 logger.addHandler(fileh)
46 return logger # Return Logger
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')