From 8691bcfcc92a26b97f704e3d3d00a5e1f1b83c00 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Wed, 3 Jan 2024 20:23:03 +0200 Subject: [PATCH] feat(log): setup logger for each module --- main.py | 40 ++++++++++++++++++---------------------- src/ai/__init__.py | 3 +++ src/ai/log.py | 13 +++++++++++++ src/game/__init__.py | 3 ++- src/game/game.py | 4 +++- src/game/log.py | 13 +++++++++++++ src/gui/__init__.py | 3 +++ src/gui/log.py | 13 +++++++++++++ src/utils/__init__.py | 7 +++---- src/utils/config.py | 2 ++ src/utils/log.py | 15 +++++++++++++++ src/utils/path.py | 3 +++ 12 files changed, 91 insertions(+), 28 deletions(-) create mode 100644 src/ai/log.py create mode 100644 src/game/log.py create mode 100644 src/gui/__init__.py create mode 100644 src/gui/log.py create mode 100644 src/utils/log.py create mode 100644 src/utils/path.py diff --git a/main.py b/main.py index b2bc7a7..312ca7f 100755 --- a/main.py +++ b/main.py @@ -1,12 +1,8 @@ #!/usr/bin/env python - import argparse -from game import play - -# from ai import train from loguru import logger -from utils import BASE_PATH +from utils import BASE_PATH, Config def pos_int(string: str) -> int: @@ -60,34 +56,34 @@ group2.add_argument( help="Run app with GUI", ) - -def setup_logger(debug_level: str) -> None: - logger.add( - BASE_PATH / ".logs" / "game.log", - format="{time} | {level} | {message}", - level=debug_level.upper(), - rotation="10 MB", - compression="zip", - ) +logger.add( + BASE_PATH / ".logs" / "2048.log", + format="{time} | {level} | {message}", + level="WARNING", + rotation="10 MB", + compression="zip", +) @logger.catch def main(args: argparse.ArgumentParser) -> None: if args.debug: - setup_logger("debug") + Config.log_level = "debug" elif args.verbose: - setup_logger("debug") - else: - setup_logger("warning") + Config.log_level = "info" + + import ai + import game + import gui if args.train is not None: # train(args.train) - logger.debug("Train") + ai.log.debug("Train") elif args.noui: - logger.debug("Run game in CLI") - play() + game.log.debug("Run game in CLI") + game.play() else: - logger.debug("Run app") + gui.log.debug("Run app") # play() diff --git a/src/ai/__init__.py b/src/ai/__init__.py index 7bc8b97..b643d82 100644 --- a/src/ai/__init__.py +++ b/src/ai/__init__.py @@ -1,5 +1,8 @@ # from .config import get_config # from .io import read_genome # from .training import train +from .log import log + +__all__ = ["log"] # # __all__ = ["train", "read_genome", "get_config"] diff --git a/src/ai/log.py b/src/ai/log.py new file mode 100644 index 0000000..a4596c6 --- /dev/null +++ b/src/ai/log.py @@ -0,0 +1,13 @@ +from loguru import logger +from utils import BASE_PATH, Config + +log = logger.bind(name="ai") + +log.add( + BASE_PATH / ".logs" / "ai.log", + format="{time} | {level} | {message}", + level=Config.log_level.upper(), + rotation="10 MB", + compression="zip", + filter=lambda record: record["extra"]["name"] == "ai", +) diff --git a/src/game/__init__.py b/src/game/__init__.py index 45e6df8..94f6119 100644 --- a/src/game/__init__.py +++ b/src/game/__init__.py @@ -1,3 +1,4 @@ from .game import Game2048, play +from .log import log -__all__ = ["Game2048", "play"] +__all__ = ["Game2048", "play", "log"] diff --git a/src/game/game.py b/src/game/game.py index f1d9e1c..4f52369 100644 --- a/src/game/game.py +++ b/src/game/game.py @@ -1,10 +1,12 @@ import random import numpy as np -from loguru import logger from utils import Config, Direction +from .log import log + +@log.catch def play() -> None: game = Game2048() diff --git a/src/game/log.py b/src/game/log.py new file mode 100644 index 0000000..8bcda83 --- /dev/null +++ b/src/game/log.py @@ -0,0 +1,13 @@ +from loguru import logger +from utils import BASE_PATH, Config + +log = logger.bind(name="game") + +log.add( + BASE_PATH / ".logs" / "game.log", + format="{time} | {level} | {message}", + level=Config.log_level.upper(), + rotation="10 MB", + compression="zip", + filter=lambda record: record["extra"]["name"] == "game", +) diff --git a/src/gui/__init__.py b/src/gui/__init__.py new file mode 100644 index 0000000..466da48 --- /dev/null +++ b/src/gui/__init__.py @@ -0,0 +1,3 @@ +from .log import log + +__all__ = ["log"] diff --git a/src/gui/log.py b/src/gui/log.py new file mode 100644 index 0000000..35cd64b --- /dev/null +++ b/src/gui/log.py @@ -0,0 +1,13 @@ +from loguru import logger +from utils import BASE_PATH, Config + +log = logger.bind(name="gui") + +log.add( + BASE_PATH / ".logs" / "gui.log", + format="{time} | {level} | {message}", + level=Config.log_level.upper(), + rotation="10 MB", + compression="zip", + filter=lambda record: record["extra"]["name"] == "gui", +) diff --git a/src/utils/__init__.py b/src/utils/__init__.py index b0d3f51..fc32191 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -1,11 +1,9 @@ -from pathlib import Path - from .collections import Board, Font, Header, Position, Screen, Size, Tile from .color import ColorScheme from .config import Config from .enums import Direction - -BASE_PATH = Path(__file__).resolve().parent.parent.parent.parent +from .log import log +from .path import BASE_PATH __all__ = [ "Board", @@ -19,4 +17,5 @@ __all__ = [ "Screen", "BASE_PATH", "Config", + "log", ] diff --git a/src/utils/config.py b/src/utils/config.py index 95d5904..16824e3 100644 --- a/src/utils/config.py +++ b/src/utils/config.py @@ -15,3 +15,5 @@ class Config: board = Board() header = Header() screen = Screen() + + log_level = "warning" diff --git a/src/utils/log.py b/src/utils/log.py new file mode 100644 index 0000000..7a51660 --- /dev/null +++ b/src/utils/log.py @@ -0,0 +1,15 @@ +from loguru import logger + +from .config import Config +from .path import BASE_PATH + +log = logger.bind(name="utils") + +log.add( + BASE_PATH / ".logs" / "utils.log", + format="{time} | {level} | {message}", + level=Config.log_level.upper(), + rotation="10 MB", + compression="zip", + filter=lambda record: record["extra"]["name"] == "utils", +) diff --git a/src/utils/path.py b/src/utils/path.py new file mode 100644 index 0000000..39bd6b7 --- /dev/null +++ b/src/utils/path.py @@ -0,0 +1,3 @@ +from pathlib import Path + +BASE_PATH = Path(__file__).resolve().parent.parent.parent