[Refactor] _tux_logger.py by kzndotsh · Pull Request #40 · allthingslinux/tux
class TuxLogger(logging.Logger): def __init__(self, name, project_logging_level=logging.INFO): super().__init__(name, level=project_logging_level) self.__setup_logging() self.file_handlers = {} def __setup_logging(self): log_format = "%(asctime)s [%(log_color)s%(levelname)s%(reset)s] [%(name)s]: %(message)s" handler = colorlog.StreamHandler() handler.setFormatter(colorlog.ColoredFormatter(log_format)) self.addHandler(handler) file_name = os.path.join("logs", "bot.log") file_handler = self.__create_file_handler(file_name) self.addHandler(file_handler) def __create_file_handler(self, filename): file_handler = logging.FileHandler(filename, mode="a") file_handler.setFormatter( logging.Formatter("%(asctime)s [%(levelname)s] [%(name)s]: %(message)s") ) return file_handler def __get_file_handler(self, module_name): if module_name not in self.file_handlers: file_name = os.path.join("logs", f"{module_name}.log") self.file_handlers[module_name] = self.__create_file_handler(file_name) return self.file_handlers[module_name] def __log_to_file(self, level, message, caller_module): file_handler = self.__get_file_handler(caller_module) self.addHandler(file_handler) self.log(level, message) self.removeHandler(file_handler) def debug(self, message, filename="unknown"): self.__log_to_file(logging.DEBUG, message, filename) def info(self, message, filename="unknown"): self.__log_to_file(logging.INFO, message, filename) def warning(self, message, filename="unknown"): self.__log_to_file(logging.WARNING, message, filename) def error(self, message, filename="unknown"): self.__log_to_file(logging.ERROR, message, filename) def critical(self, message, filename="unknown"): self.__log_to_file(logging.CRITICAL, message, filename) class LoggingCog(commands.Cog): def __init__(self, bot, discord_logging_level=logging.WARNING): self.bot = bot discord_logger = logging.getLogger("discord") discord_logger.setLevel(discord_logging_level) logger = TuxLogger(__name__) async def setup(bot, project_logging_level=logging.DEBUG, discord_logging_level=logging.WARNING): global logger log_cog = LoggingCog(bot, discord_logging_level) logger.setLevel(project_logging_level) await bot.add_cog(log_cog)``` broke down the logging function and renamed the functions to call: UpperCaseCamelCase