Coverage for src/probable_fiesta/logger/builder/logger.py: 77%
75 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"""Logger class."""
2import logging
4class Logger:
6 def __init__(self, name=None, level=None, fmt=None, directory=None):
7 self.name = name
8 self.level = level
9 self.fmt = fmt
10 self.directory = directory
11 self.logger = None
12 self.file_handler = None
14 def __str__(self) -> str:
15 return f"Logger: {self.__dict__}"
17 def get_logger(self, name=None, level=None, fmt=None, directory=None):
18 if name is not None:
19 self.name = name
20 if level is not None:
21 self.level = level
22 if fmt is not None:
23 self.fmt = fmt
24 if directory is not None:
25 self.directory = directory
26 if self.name is None:
27 print("Name not set. Cannot create logger.")
28 return None
29 _logger = logging.getLogger(self.name)
30 _logger.setLevel(self.parse_level(self.level))
31 if self.file_handler is None:
32 self.create_file_handler()
34 _logger.addHandler(self.file_handler)
35 self.logger = _logger
36 return self.logger
38 def create_file_handler(self):
39 if self.name is None:
40 print("Name not set. Cannot create file handler.")
41 return None
42 if not self.directory:
43 self.directory = "./"
44 _file_handler = logging.FileHandler(self.directory+f"/{self.name}.log")
45 _file_handler.setLevel(self.parse_level(self.level))
46 _file_handler.setFormatter(self.fmt)
47 self.file_handler = _file_handler
48 print("File handler created", self.file_handler)
49 return self.file_handler
51 def parse_level(self, level): # defaults to info
52 if level is None:
53 return logging.INFO
54 if level == "DEBUG":
55 return logging.DEBUG
56 if level == "INFO":
57 return logging.INFO
58 if level == "WARNING":
59 return logging.WARNING
60 if level == "ERROR":
61 return logging.ERROR
62 if level == "CRITICAL":
63 return logging.CRITICAL
64 return logging.INFO
66 def set_logger(self, logger):
67 self.logger = logger
68 return self.logger
70 @staticmethod
71 def new(name=None, level=None, fmt=None, directory=None):
72 return Logger(name, level, fmt, directory)
74 @staticmethod
75 def new_logger(name=None, level=None, fmt=None, directory=None):
76 logger = Logger.new(name, level, fmt, directory)
77 return logger.get_logger()
80 class Factory():
81 @staticmethod
82 def new(name=None, level=None, fmt=None, directory=None):
83 return Logger.new(name, level, fmt, directory)
85 @staticmethod
86 def create_file_handler(name=None, level=None, fmt=None, directory=None) -> logging.FileHandler:
87 logger = Logger.new(name, level, fmt, directory)
88 return logger.create_file_handler()
91 factory = Factory()