Improve logging

This commit is contained in:
Kiryl
2022-10-27 12:19:35 +03:00
parent 4cc1333b80
commit be615ddf40
5 changed files with 61 additions and 53 deletions

View File

@@ -27,10 +27,33 @@ class ColoredFormatter(logging.Formatter):
return logging.Formatter.format(self, record)
class BookLogger:
def __init__(self, name: str, book_id: Union[int, str], main_logger: logging.Logger = None,
filemode: str = "w+", logging_level: int = logging.INFO,
logging_format: str = "%(asctime)s - %(levelname)s - %(message)s [%(filename)s:%(lineno)d in %(funcName)s]"):
class MainLogger:
def __init__(self, name: str):
self.main_logger = logging.getLogger(name)
def generate_file_path(self, filename: str):
folder_path = os.path.dirname(os.path.abspath(os.path.join(__file__ ,"../..")))
folder_path = os.path.join(folder_path, f"logs/{time.strftime('%d-%m-%Y_%H-00')}/")
if not os.path.exists(folder_path):
os.makedirs(folder_path)
file_path = os.path.join(folder_path, filename)
return file_path
def configure_main_logger(self, filemode: str = "w+", logging_level: int = logging.INFO) -> logging.Logger:
file_path = self.generate_file_path("converter.log")
file_handler = logging.FileHandler(file_path, mode=filemode)
self.main_logger.addHandler(file_handler)
logger_format = logging.Formatter(fmt="%(asctime)s - %(levelname)s - %(message)s "
"[%(filename)s:%(lineno)d in %(funcName)s]")
file_handler.setFormatter(logger_format)
self.main_logger.setLevel(logging_level)
return self.main_logger
class BookLogger(MainLogger):
def __init__(self, name: str):
"""
Method for Logger configuration. Logger will write to file.
Parameters
@@ -49,29 +72,27 @@ class BookLogger:
format of record in log file
"""
self.main_logger = main_logger
self.logger = logging.getLogger(name)
self.logger.propagate = False
super().__init__(name)
self.book_logger = logging.getLogger(name)
self.book_logger.propagate = False
folder_path = os.path.dirname(
os.path.dirname(os.path.abspath(__file__)))
folder_path = os.path.join(os.path.dirname(folder_path), f"logs/{time.strftime('%d-%m-%Y_%H-00')}/")
filename = f"{book_id}.log"
file_path = os.path.join(folder_path, filename)
def configure_book_logger(self, book_id: Union[int, str], filemode: str = "w+",
logging_level: int = logging.INFO):
file_path = self.generate_file_path(f"{book_id}.log")
book_logger_format: str = "%(asctime)s - %(levelname)s - %(message)s" \
" [%(filename)s:%(lineno)d in %(funcName)s]"
if not os.path.exists(folder_path):
os.makedirs(folder_path + time.strftime("%Y-%m-%_%H"))
file_handler = logging.FileHandler(file_path, mode=filemode)
file_format = logging.Formatter(logging_format)
self.book_logger.addHandler(file_handler)
file_format = logging.Formatter(book_logger_format)
file_handler.setFormatter(file_format)
self.logger.addHandler(file_handler)
stream_handler = logging.StreamHandler()
stream_format = ColoredFormatter(logging_format)
stream_format = ColoredFormatter(book_logger_format)
stream_handler.setFormatter(stream_format)
self.logger.addHandler(stream_handler)
self.logger.setLevel(logging_level)
self.book_logger.addHandler(stream_handler)
self.book_logger.setLevel(logging_level)
def log(self, message: str, logging_level: int = 20):
"""
@@ -81,10 +102,10 @@ class BookLogger:
message: str
body of the message
logging_level: int
level of logging
level of logging
"""
self.logger.log(msg=message, level=logging_level, stacklevel=2)
self.book_logger.log(msg=message, level=logging_level, stacklevel=2)
def log_error_to_main_log(self, message: str = ""):
""" Method for logging error to main log file. """