diff --git a/code_soup/utils/__init__.py b/code_soup/utils/__init__.py new file mode 100644 index 0000000..08e7a6e --- /dev/null +++ b/code_soup/utils/__init__.py @@ -0,0 +1 @@ +from code_soup.common.utils.logger import Logger diff --git a/code_soup/utils/logger.py b/code_soup/utils/logger.py new file mode 100644 index 0000000..422c6a0 --- /dev/null +++ b/code_soup/utils/logger.py @@ -0,0 +1,47 @@ +import logging +import sys + + +class Logger(object): + def __init__(self, log_level=logging.DEBUG): + self.logger = logging.getLogger() + + # Set global log level to 'debug' (required for handler levels to work) + self.logger.setLevel(log_level) + self.log_level = log_level + + def add_file_handler(self, log_file_name): + file_handler = logging.FileHandler(log_file_name) + file_handler.setLevel(self.log_level) + self.logger.addHandler(file_handler) + + def add_stream_handler(self): + stream_handler = logging.StreamHandler(sys.stdout) + stream_handler.setLevel(self.log_level) + self.logger.addHandler(stream_handler) + + def debug(self, message): + """Log debug message""" + self.logger.debug(message) + + def info(self, message): + """Log info message""" + self.logger.info(message) + + def warning(self, message): + """Log warning message""" + self.logger.warning(message) + + def error(self, message): + """Log error message""" + self.logger.error(message) + + def critical(self, message): + """Log critical message""" + self.logger.critical(message) + + def log_epoch_loss(self, epoch, total_epochs, loss): + self.logger.info(f"Epoch: [{epoch}/{total_epochs}]\tLoss: {loss}") + + def log_epoch_acc(self, epoch, total_epochs, acc): + self.logger.info(f"Epoch: [{epoch}/{total_epochs}]\tAccuracy: {acc}")